diff --git a/Editor/AnimationWindow.cpp b/Editor/AnimationWindow.cpp index b991eeaaa..c572bcc2e 100644 --- a/Editor/AnimationWindow.cpp +++ b/Editor/AnimationWindow.cpp @@ -8,17 +8,18 @@ using namespace wi::scene; void AnimationWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Animation Window"); + wi::gui::Window::Create(ICON_ANIMATION " Animation", wi::gui::Window::WindowControls::COLLAPSE); SetSize(XMFLOAT2(520, 140)); - float x = 140; + float x = 80; float y = 0; float hei = 18; + float wid = 200; float step = hei + 2; animationsComboBox.Create("Animation: "); - animationsComboBox.SetSize(XMFLOAT2(300, hei)); + animationsComboBox.SetSize(XMFLOAT2(wid, hei)); animationsComboBox.SetPos(XMFLOAT2(x, y)); animationsComboBox.SetEnabled(false); animationsComboBox.OnSelect([&](wi::gui::EventArgs args) { @@ -30,7 +31,7 @@ void AnimationWindow::Create(EditorComponent* _editor) loopedCheckBox.Create("Looped: "); loopedCheckBox.SetTooltip("Toggle animation looping behaviour."); loopedCheckBox.SetSize(XMFLOAT2(hei, hei)); - loopedCheckBox.SetPos(XMFLOAT2(150, y += step)); + loopedCheckBox.SetPos(XMFLOAT2(x, y += step)); loopedCheckBox.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -43,7 +44,7 @@ void AnimationWindow::Create(EditorComponent* _editor) playButton.Create("Play"); playButton.SetTooltip("Play/Pause animation."); playButton.SetSize(XMFLOAT2(100, hei)); - playButton.SetPos(XMFLOAT2(200, y)); + playButton.SetPos(XMFLOAT2(loopedCheckBox.GetPos().x + loopedCheckBox.GetSize().x + 5, y)); playButton.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -63,7 +64,7 @@ void AnimationWindow::Create(EditorComponent* _editor) stopButton.Create("Stop"); stopButton.SetTooltip("Stop animation."); stopButton.SetSize(XMFLOAT2(100, hei)); - stopButton.SetPos(XMFLOAT2(310, y)); + stopButton.SetPos(XMFLOAT2(playButton.GetPos().x + playButton.GetSize().x + 5, y)); stopButton.OnClick([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); if (animation != nullptr) @@ -74,7 +75,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&stopButton); timerSlider.Create(0, 1, 0, 100000, "Timer: "); - timerSlider.SetSize(XMFLOAT2(250, hei)); + timerSlider.SetSize(XMFLOAT2(wid, hei)); timerSlider.SetPos(XMFLOAT2(x, y += step)); timerSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -88,7 +89,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&timerSlider); amountSlider.Create(0, 1, 1, 100000, "Amount: "); - amountSlider.SetSize(XMFLOAT2(250, hei)); + amountSlider.SetSize(XMFLOAT2(wid, hei)); amountSlider.SetPos(XMFLOAT2(x, y += step)); amountSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -102,7 +103,7 @@ void AnimationWindow::Create(EditorComponent* _editor) AddWidget(&amountSlider); speedSlider.Create(0, 4, 1, 100000, "Speed: "); - speedSlider.SetSize(XMFLOAT2(250, hei)); + speedSlider.SetSize(XMFLOAT2(wid, hei)); speedSlider.SetPos(XMFLOAT2(x, y += step)); speedSlider.OnSlide([&](wi::gui::EventArgs args) { AnimationComponent* animation = editor->GetCurrentScene().animations.GetComponent(entity); @@ -117,7 +118,7 @@ void AnimationWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(100, 50, 0)); + SetMinimized(true); SetVisible(false); } diff --git a/Editor/CameraWindow.cpp b/Editor/CameraWindow.cpp index 7a8c4d87c..92dd6c4f4 100644 --- a/Editor/CameraWindow.cpp +++ b/Editor/CameraWindow.cpp @@ -33,20 +33,21 @@ void CameraWindow::ResetCam() void CameraWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Camera Window"); + wi::gui::Window::Create("Camera", wi::gui::Window::WindowControls::COLLAPSE); editor->GetCurrentEditorScene().camera_transform.MatrixTransform(editor->GetCurrentEditorScene().camera.GetInvView()); editor->GetCurrentEditorScene().camera_transform.UpdateTransform(); - SetSize(XMFLOAT2(380, 360)); + SetSize(XMFLOAT2(320, 360)); - float x = 200; + float x = 140; float y = 0; float hei = 18; float step = hei + 2; + float wid = 120; farPlaneSlider.Create(100, 10000, 5000, 100000, "Far Plane: "); farPlaneSlider.SetTooltip("Controls the camera's far clip plane, geometry farther than this will be clipped."); - farPlaneSlider.SetSize(XMFLOAT2(100, hei)); + farPlaneSlider.SetSize(XMFLOAT2(wid, hei)); farPlaneSlider.SetPos(XMFLOAT2(x, y)); farPlaneSlider.SetValue(editor->GetCurrentEditorScene().camera.zFarP); farPlaneSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -60,7 +61,7 @@ void CameraWindow::Create(EditorComponent* _editor) nearPlaneSlider.Create(0.01f, 10, 0.1f, 10000, "Near Plane: "); nearPlaneSlider.SetTooltip("Controls the camera's near clip plane, geometry closer than this will be clipped."); - nearPlaneSlider.SetSize(XMFLOAT2(100, hei)); + nearPlaneSlider.SetSize(XMFLOAT2(wid, hei)); nearPlaneSlider.SetPos(XMFLOAT2(x, y += step)); nearPlaneSlider.SetValue(editor->GetCurrentEditorScene().camera.zNearP); nearPlaneSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -74,7 +75,7 @@ void CameraWindow::Create(EditorComponent* _editor) fovSlider.Create(1, 179, 60, 10000, "FOV: "); fovSlider.SetTooltip("Controls the camera's top-down field of view (in degrees)"); - fovSlider.SetSize(XMFLOAT2(100, hei)); + fovSlider.SetSize(XMFLOAT2(wid, hei)); fovSlider.SetPos(XMFLOAT2(x, y += step)); fovSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -87,7 +88,7 @@ void CameraWindow::Create(EditorComponent* _editor) focalLengthSlider.Create(0.001f, 100, 1, 10000, "Focal Length: "); focalLengthSlider.SetTooltip("Controls the depth of field effect's focus distance"); - focalLengthSlider.SetSize(XMFLOAT2(100, hei)); + focalLengthSlider.SetSize(XMFLOAT2(wid, hei)); focalLengthSlider.SetPos(XMFLOAT2(x, y += step)); focalLengthSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -100,7 +101,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureSizeSlider.Create(0, 1, 0, 10000, "Aperture Size: "); apertureSizeSlider.SetTooltip("Controls the depth of field effect's strength"); - apertureSizeSlider.SetSize(XMFLOAT2(100, hei)); + apertureSizeSlider.SetSize(XMFLOAT2(wid, hei)); apertureSizeSlider.SetPos(XMFLOAT2(x, y += step)); apertureSizeSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -113,7 +114,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureShapeXSlider.Create(0, 2, 1, 10000, "Aperture Shape X: "); apertureShapeXSlider.SetTooltip("Controls the depth of field effect's bokeh shape"); - apertureShapeXSlider.SetSize(XMFLOAT2(100, hei)); + apertureShapeXSlider.SetSize(XMFLOAT2(wid, hei)); apertureShapeXSlider.SetPos(XMFLOAT2(x, y += step)); apertureShapeXSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -126,7 +127,7 @@ void CameraWindow::Create(EditorComponent* _editor) apertureShapeYSlider.Create(0, 2, 1, 10000, "Aperture Shape Y: "); apertureShapeYSlider.SetTooltip("Controls the depth of field effect's bokeh shape"); - apertureShapeYSlider.SetSize(XMFLOAT2(100, hei)); + apertureShapeYSlider.SetSize(XMFLOAT2(wid, hei)); apertureShapeYSlider.SetPos(XMFLOAT2(x, y += step)); apertureShapeYSlider.OnSlide([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -138,22 +139,22 @@ void CameraWindow::Create(EditorComponent* _editor) AddWidget(&apertureShapeYSlider); movespeedSlider.Create(1, 100, 10, 10000, "Movement Speed: "); - movespeedSlider.SetSize(XMFLOAT2(100, hei)); + movespeedSlider.SetSize(XMFLOAT2(wid, hei)); movespeedSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&movespeedSlider); accelerationSlider.Create(0.01f, 1, 0.18f, 10000, "Acceleration: "); - accelerationSlider.SetSize(XMFLOAT2(100, hei)); + accelerationSlider.SetSize(XMFLOAT2(wid, hei)); accelerationSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&accelerationSlider); rotationspeedSlider.Create(0.1f, 2, 1, 10000, "Rotation Speed: "); - rotationspeedSlider.SetSize(XMFLOAT2(100, hei)); + rotationspeedSlider.SetSize(XMFLOAT2(wid, hei)); rotationspeedSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&rotationspeedSlider); resetButton.Create("Reset Camera"); - resetButton.SetSize(XMFLOAT2(140, hei)); + resetButton.SetSize(XMFLOAT2(wid, hei)); resetButton.SetPos(XMFLOAT2(x, y += step)); resetButton.OnClick([&](wi::gui::EventArgs args) { ResetCam(); @@ -170,7 +171,7 @@ void CameraWindow::Create(EditorComponent* _editor) proxyButton.Create("Place Proxy"); proxyButton.SetTooltip("Copy the current camera and place a proxy of it in the world."); - proxyButton.SetSize(XMFLOAT2(140, hei)); + proxyButton.SetSize(XMFLOAT2(wid, hei)); proxyButton.SetPos(XMFLOAT2(x, y += step * 2)); proxyButton.OnClick([=](wi::gui::EventArgs args) { @@ -185,8 +186,7 @@ void CameraWindow::Create(EditorComponent* _editor) CameraComponent& cam = *scene.cameras.GetComponent(entity); cam = camera; - TransformComponent& transform = *scene.transforms.GetComponent(entity); - transform.MatrixTransform(camera.InvView); + scene.transforms.GetComponent(entity)->MatrixTransform(camera.InvView); wi::Archive& archive = editor->AdvanceHistory(); archive << EditorComponent::HISTORYOP_ADD; @@ -196,7 +196,7 @@ void CameraWindow::Create(EditorComponent* _editor) editor->AddSelected(entity); editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); + editor->RecordEntity(archive, entity); editor->RefreshEntityTree(); SetEntity(entity); @@ -211,21 +211,21 @@ void CameraWindow::Create(EditorComponent* _editor) AddWidget(&followCheckBox); followSlider.Create(0.0f, 0.999f, 0.0f, 1000.0f, "Follow Proxy Delay: "); - followSlider.SetSize(XMFLOAT2(100, hei)); + followSlider.SetSize(XMFLOAT2(wid, hei)); followSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&followSlider); SetEntity(INVALID_ENTITY); + SetPos(XMFLOAT2(100, 100)); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 100, 0)); - SetVisible(false); + SetMinimized(true); } void CameraWindow::SetEntity(Entity entity) { - proxy = entity; + this->entity = entity; Scene& scene = editor->GetCurrentScene(); diff --git a/Editor/CameraWindow.h b/Editor/CameraWindow.h index e17cf4984..2e9baac50 100644 --- a/Editor/CameraWindow.h +++ b/Editor/CameraWindow.h @@ -11,7 +11,7 @@ public: void ResetCam(); EditorComponent* editor = nullptr; - wi::ecs::Entity proxy = wi::ecs::INVALID_ENTITY; + wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; void SetEntity(wi::ecs::Entity entity); void Update(); diff --git a/Editor/DecalWindow.cpp b/Editor/DecalWindow.cpp index 6e93a551c..ad836b812 100644 --- a/Editor/DecalWindow.cpp +++ b/Editor/DecalWindow.cpp @@ -9,8 +9,22 @@ using namespace wi::scene; void DecalWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Decal Window"); - SetSize(XMFLOAT2(420, 200)); + wi::gui::Window::Create(ICON_DECAL " Decal", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 150)); + + closeButton.SetTooltip("Delete DecalComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().decals.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 200; float y = 0; @@ -28,27 +42,13 @@ void DecalWindow::Create(EditorComponent* _editor) infoLabel.Create(""); infoLabel.SetText("Selecting decals will select the according material. Set decal properties (texture, color, etc.) in the Material window."); - infoLabel.SetSize(XMFLOAT2(400 - 20, 100)); + infoLabel.SetSize(XMFLOAT2(300, 100)); infoLabel.SetPos(XMFLOAT2(10, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); y += infoLabel.GetScale().y - step + 5; - decalNameField.Create("Decal Name"); - decalNameField.SetPos(XMFLOAT2(10, y+=step)); - decalNameField.SetSize(XMFLOAT2(300, hei)); - decalNameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name != nullptr) - { - *name = args.sValue; - - editor->RefreshEntityTree(); - } - }); - AddWidget(&decalNameField); - - Translate(XMFLOAT3(30, 30, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -63,14 +63,10 @@ void DecalWindow::SetEntity(Entity entity) if (decal != nullptr) { - const NameComponent& name = *scene.names.GetComponent(entity); - - decalNameField.SetValue(name.name); - decalNameField.SetEnabled(true); + SetEnabled(true); } else { - decalNameField.SetValue("No decal selected"); - decalNameField.SetEnabled(false); + SetEnabled(false); } } diff --git a/Editor/DecalWindow.h b/Editor/DecalWindow.h index b8668b8b1..e952db109 100644 --- a/Editor/DecalWindow.h +++ b/Editor/DecalWindow.h @@ -14,6 +14,5 @@ public: wi::gui::CheckBox placementCheckBox; wi::gui::Label infoLabel; - wi::gui::TextInputField decalNameField; }; diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 4918ea6a3..e974d4f12 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -6,6 +6,8 @@ #include "ModelImporter.h" #include "Translator.h" +#include "FontAwesomeV6.h" // font TTF data + #include #include #include @@ -16,6 +18,8 @@ using namespace wi::primitive; using namespace wi::scene; using namespace wi::ecs; +const float shadow_expand = 1; + void Editor::Initialize() { Application::Initialize(); @@ -25,12 +29,12 @@ void Editor::Initialize() infoDisplay.active = true; infoDisplay.watermark = true; - infoDisplay.fpsinfo = true; - infoDisplay.resolution = true; + //infoDisplay.fpsinfo = true; + //infoDisplay.resolution = true; //infoDisplay.logical_size = true; - infoDisplay.colorspace = true; - infoDisplay.heap_allocation_counter = true; - infoDisplay.vram_usage = true; + //infoDisplay.colorspace = true; + //infoDisplay.heap_allocation_counter = true; + //infoDisplay.vram_usage = true; wi::renderer::SetOcclusionCullingEnabled(true); @@ -72,7 +76,6 @@ void EditorLoadingScreen::Update(float dt) LoadingScreen::Update(dt); } - void EditorComponent::ChangeRenderPath(RENDERPATH path) { switch (path) @@ -106,19 +109,21 @@ void EditorComponent::ChangeRenderPath(RENDERPATH path) renderPath->Load(); - wi::gui::GUI& gui = GetGUI(); - // Destroy and recreate renderer and postprocess windows: - gui.RemoveWidget(&rendererWnd); + optionsWnd.RemoveWidget(&rendererWnd); rendererWnd = {}; rendererWnd.Create(this); - gui.AddWidget(&rendererWnd); + rendererWnd.SetShadowRadius(shadow_expand); + optionsWnd.AddWidget(&rendererWnd); - gui.RemoveWidget(&postprocessWnd); + optionsWnd.RemoveWidget(&postprocessWnd); postprocessWnd = {}; postprocessWnd.Create(this); - gui.AddWidget(&postprocessWnd); + postprocessWnd.SetShadowRadius(shadow_expand); + optionsWnd.AddWidget(&postprocessWnd); + + themeCombo.SetSelected(themeCombo.GetSelected()); // destroyed windows need theme set again } void EditorComponent::ResizeBuffers() @@ -231,99 +236,12 @@ void EditorComponent::ResizeLayout() float screenW = GetLogicalWidth(); float screenH = GetLogicalHeight(); - XMFLOAT2 option_size = XMFLOAT2(100, 34); - float x = screenW - option_size.x; - float y = screenH - option_size.y; - float step = (option_size.y + 2) * -1; - float hstep = (option_size.x + 2) * -1; + optionsWnd.SetPos(XMFLOAT2(0, screenH - optionsWnd.GetScale().y)); - rendererWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - rendererWnd_Toggle.SetSize(option_size); - - postprocessWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - postprocessWnd_Toggle.SetSize(option_size); - - paintToolWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - paintToolWnd_Toggle.SetSize(option_size); - - terrainWnd_Toggle.SetPos(XMFLOAT2(x += hstep, y)); - terrainWnd_Toggle.SetSize(option_size); - - ///////////////////////// - - option_size.y = 16; - step = (option_size.y + 2) * -1; - x = screenW - option_size.x; - y = screenH - option_size.y; - - weatherWnd_Toggle.SetPos(XMFLOAT2(x, y)); - weatherWnd_Toggle.SetSize(option_size); - - objectWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - objectWnd_Toggle.SetSize(option_size); - - meshWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - meshWnd_Toggle.SetSize(option_size); - - materialWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - materialWnd_Toggle.SetSize(option_size); - - cameraWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - cameraWnd_Toggle.SetSize(option_size); - - envProbeWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - envProbeWnd_Toggle.SetSize(option_size); - - decalWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - decalWnd_Toggle.SetSize(option_size); - - soundWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - soundWnd_Toggle.SetSize(option_size); - - lightWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - lightWnd_Toggle.SetSize(option_size); - - animWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - animWnd_Toggle.SetSize(option_size); - - emitterWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - emitterWnd_Toggle.SetSize(option_size); - - hairWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - hairWnd_Toggle.SetSize(option_size); - - forceFieldWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - forceFieldWnd_Toggle.SetSize(option_size); - - springWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - springWnd_Toggle.SetSize(option_size); - - ikWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - ikWnd_Toggle.SetSize(option_size); - - transformWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - transformWnd_Toggle.SetSize(option_size); - - layerWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - layerWnd_Toggle.SetSize(option_size); - - nameWnd_Toggle.SetPos(XMFLOAT2(x, y += step)); - nameWnd_Toggle.SetSize(option_size); + componentWindow.SetPos(XMFLOAT2(screenW - componentWindow.GetScale().x, screenH - componentWindow.GetScale().y)); //////////////////////////////////////////////////////////////////////////////////// - translatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25, 0)); - translatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isScalatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25 - 40 * 2, 22)); - isScalatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isRotatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25 - 40 * 1, 22)); - isRotatorCheckBox.SetSize(XMFLOAT2(18, 18)); - - isTranslatorCheckBox.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3 - 25, 22)); - isTranslatorCheckBox.SetSize(XMFLOAT2(18, 18)); - saveButton.SetPos(XMFLOAT2(screenW - 50 - 55 - 105 * 3, 0)); saveButton.SetSize(XMFLOAT2(100, 40)); @@ -341,74 +259,845 @@ void EditorComponent::ResizeLayout() exitButton.SetPos(XMFLOAT2(screenW - 50, 0)); exitButton.SetSize(XMFLOAT2(50, 40)); - - profilerEnabledCheckBox.SetSize(XMFLOAT2(18, 18)); - profilerEnabledCheckBox.SetPos(XMFLOAT2(screenW - 485, 45)); - - physicsEnabledCheckBox.SetSize(XMFLOAT2(18, 18)); - physicsEnabledCheckBox.SetPos(XMFLOAT2(screenW - 390, 45)); - - cinemaModeCheckBox.SetSize(XMFLOAT2(18, 18)); - cinemaModeCheckBox.SetPos(XMFLOAT2(screenW - 260, 45)); - - renderPathComboBox.SetSize(XMFLOAT2(120, 18)); - renderPathComboBox.SetPos(XMFLOAT2(screenW - 140, 45)); - - sceneComboBox.SetSize(XMFLOAT2(120, 18)); - sceneComboBox.SetPos(XMFLOAT2(screenW - 140, 67)); - - saveModeComboBox.SetSize(XMFLOAT2(120, 18)); - saveModeComboBox.SetPos(XMFLOAT2(screenW - 140, 89)); - - pathTraceTargetSlider.SetSize(XMFLOAT2(200, 18)); - pathTraceTargetSlider.SetPos(XMFLOAT2(screenW - 240, 111)); - - pathTraceStatisticsLabel.SetSize(XMFLOAT2(240, 60)); - pathTraceStatisticsLabel.SetPos(XMFLOAT2(screenW - 240, 133)); - - entityTree.SetSize(XMFLOAT2(260, 300)); - entityTree.SetPos(XMFLOAT2(0, screenH - entityTree.scale_local.y)); } void EditorComponent::Load() { - wi::jobsystem::context ctx; - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { pointLightTex = wi::resourcemanager::Load("images/pointlight.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { spotLightTex = wi::resourcemanager::Load("images/spotlight.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { dirLightTex = wi::resourcemanager::Load("images/directional_light.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { decalTex = wi::resourcemanager::Load("images/decal.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { forceFieldTex = wi::resourcemanager::Load("images/forcefield.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { emitterTex = wi::resourcemanager::Load("images/emitter.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { hairTex = wi::resourcemanager::Load("images/hair.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { cameraTex = wi::resourcemanager::Load("images/camera.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { armatureTex = wi::resourcemanager::Load("images/armature.dds"); }); - wi::jobsystem::Execute(ctx, [this](wi::jobsystem::JobArgs args) { soundTex = wi::resourcemanager::Load("images/sound.dds"); }); - // wait for ctx is at the end of this function! + // Font icon is from #include "FontAwesomeV6.h" + // We will not directly use this font style, but let the font renderer fall back on it + // when an icon character is not found in the default font. + wi::font::AddFontStyle("FontAwesomeV6", font_awesome_v6, sizeof(font_awesome_v6)); - rendererWnd_Toggle.Create("Renderer"); - rendererWnd_Toggle.SetTooltip("Renderer settings window"); - rendererWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - rendererWnd.SetVisible(!rendererWnd.IsVisible()); + saveButton.Create(ICON_SAVE " Save"); + saveButton.font.params.shadowColor = wi::Color::Transparent(); + saveButton.SetTooltip("Save the current scene to a new file (Ctrl + Shift + S)"); + saveButton.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); + saveButton.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); + saveButton.OnClick([&](wi::gui::EventArgs args) { + SaveAs(); }); - GetGUI().AddWidget(&rendererWnd_Toggle); + GetGUI().AddWidget(&saveButton); - postprocessWnd_Toggle.Create("PostProcess"); - postprocessWnd_Toggle.SetTooltip("Postprocess settings window"); - postprocessWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - postprocessWnd.SetVisible(!postprocessWnd.IsVisible()); + + openButton.Create(ICON_OPEN " Open"); + openButton.font.params.shadowColor = wi::Color::Transparent(); + openButton.SetTooltip("Open a scene, import a model or execute a Lua script..."); + openButton.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); + openButton.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); + openButton.OnClick([&](wi::gui::EventArgs args) { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = ".wiscene, .obj, .gltf, .glb, .lua"; + params.extensions.push_back("wiscene"); + params.extensions.push_back("obj"); + params.extensions.push_back("gltf"); + params.extensions.push_back("glb"); + params.extensions.push_back("lua"); + wi::helper::FileDialog(params, [&](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + std::string extension = wi::helper::toUpper(wi::helper::GetExtensionFromFileName(fileName)); + if (!extension.compare("LUA")) + { + wi::lua::RunFile(fileName); + return; + } + + size_t camera_count_prev = GetCurrentScene().cameras.GetCount(); + + main->loader.addLoadingFunction([=](wi::jobsystem::JobArgs args) { + + if (!extension.compare("WISCENE")) // engine-serialized + { + wi::scene::LoadModel(GetCurrentScene(), fileName); + GetCurrentEditorScene().path = fileName; + } + else if (!extension.compare("OBJ")) // wavefront-obj + { + Scene scene; + ImportModel_OBJ(fileName, scene); + GetCurrentScene().Merge(scene); + } + else if (!extension.compare("GLTF")) // text-based gltf + { + Scene scene; + ImportModel_GLTF(fileName, scene); + GetCurrentScene().Merge(scene); + } + else if (!extension.compare("GLB")) // binary gltf + { + Scene scene; + ImportModel_GLTF(fileName, scene); + GetCurrentScene().Merge(scene); + } + }); + main->loader.onFinished([=] { + + // Detect when the new scene contains a new camera, and snap the camera onto it: + size_t camera_count = GetCurrentScene().cameras.GetCount(); + if (camera_count > 0 && camera_count > camera_count_prev) + { + Entity entity = GetCurrentScene().cameras.GetEntity(camera_count_prev); + if (entity != INVALID_ENTITY) + { + TransformComponent* camera_transform = GetCurrentScene().transforms.GetComponent(entity); + if (camera_transform != nullptr) + { + GetCurrentEditorScene().camera_transform = *camera_transform; + } + + CameraComponent* cam = GetCurrentScene().cameras.GetComponent(entity); + if (cam != nullptr) + { + GetCurrentEditorScene().camera = *cam; + // camera aspect should be always for the current screen + GetCurrentEditorScene().camera.width = (float)renderPath->GetInternalResolution().x; + GetCurrentEditorScene().camera.height = (float)renderPath->GetInternalResolution().y; + } + } + } + + main->ActivatePath(this, 0.2f, wi::Color::Black()); + weatherWnd.Update(); + RefreshEntityTree(); + RefreshSceneList(); + }); + main->ActivatePath(&main->loader, 0.2f, wi::Color::Black()); + ResetHistory(); + }); + }); }); - GetGUI().AddWidget(&postprocessWnd_Toggle); + GetGUI().AddWidget(&openButton); - paintToolWnd_Toggle.Create("Paint Tool"); - paintToolWnd_Toggle.SetTooltip("Paint tool window"); - paintToolWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - paintToolWnd.SetVisible(!paintToolWnd.IsVisible()); + + closeButton.Create(ICON_CLOSE " Close"); + closeButton.font.params.shadowColor = wi::Color::Transparent(); + closeButton.SetTooltip("Close the current scene.\nThis will clear everything from the currently selected scene, and delete the scene.\nThis operation cannot be undone!"); + closeButton.SetColor(wi::Color(255, 130, 100, 180), wi::gui::WIDGETSTATE::IDLE); + closeButton.SetColor(wi::Color(255, 200, 150, 255), wi::gui::WIDGETSTATE::FOCUS); + closeButton.OnClick([&](wi::gui::EventArgs args) { + + terragen.Generation_Cancel(); + terragen.terrainEntity = INVALID_ENTITY; + terragen.SetCollapsed(true); + + translator.selected.clear(); + wi::scene::Scene& scene = GetCurrentScene(); + wi::renderer::ClearWorld(scene); + objectWnd.SetEntity(INVALID_ENTITY); + meshWnd.SetEntity(INVALID_ENTITY, -1); + lightWnd.SetEntity(INVALID_ENTITY); + soundWnd.SetEntity(INVALID_ENTITY); + decalWnd.SetEntity(INVALID_ENTITY); + envProbeWnd.SetEntity(INVALID_ENTITY); + materialWnd.SetEntity(INVALID_ENTITY); + emitterWnd.SetEntity(INVALID_ENTITY); + hairWnd.SetEntity(INVALID_ENTITY); + forceFieldWnd.SetEntity(INVALID_ENTITY); + cameraWnd.SetEntity(INVALID_ENTITY); + paintToolWnd.SetEntity(INVALID_ENTITY); + springWnd.SetEntity(INVALID_ENTITY); + ikWnd.SetEntity(INVALID_ENTITY); + transformWnd.SetEntity(INVALID_ENTITY); + layerWnd.SetEntity(INVALID_ENTITY); + nameWnd.SetEntity(INVALID_ENTITY); + + RefreshEntityTree(); + ResetHistory(); + GetCurrentEditorScene().path.clear(); + + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + if (scenes.size() > 1) + { + scenes.erase(scenes.begin() + current_scene); + } + SetCurrentScene(std::max(0, current_scene - 1)); + }); }); - GetGUI().AddWidget(&paintToolWnd_Toggle); + GetGUI().AddWidget(&closeButton); - terrainWnd_Toggle.Create("Terrain"); - terrainWnd_Toggle.SetTooltip("Terrain Generator"); - terrainWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { + + aboutButton.Create(ICON_HELP); + aboutButton.font.params.shadowColor = wi::Color::Transparent(); + aboutButton.SetTooltip("About..."); + aboutButton.SetColor(wi::Color(50, 160, 200, 180), wi::gui::WIDGETSTATE::IDLE); + aboutButton.SetColor(wi::Color(120, 200, 200, 255), wi::gui::WIDGETSTATE::FOCUS); + aboutButton.OnClick([&](wi::gui::EventArgs args) { + aboutLabel.SetVisible(!aboutLabel.IsVisible()); + }); + GetGUI().AddWidget(&aboutButton); + + { + std::string ss; + ss += "Wicked Engine Editor v"; + ss += wi::version::GetVersionString(); + ss += "\nCreated by Turánszki János"; + ss += "\n\nWebsite: https://wickedengine.net/"; + ss += "\nGithub page: https://github.com/turanszkij/WickedEngine"; + ss += "\nDiscord chat: https://discord.gg/CFjRYmE"; + ss += "\nYou can support the project on Patreon: https://www.patreon.com/wickedengine"; + ss += "\n\nControls\n"; + ss += "------------\n"; + ss += "Move camera: WASD, or Contoller left stick or D-pad\n"; + ss += "Look: Middle mouse button / arrow keys / controller right stick\n"; + ss += "Select: Right mouse button\n"; + ss += "Interact with water: Left mouse button when nothing is selected\n"; + ss += "Faster camera: Left Shift button or controller R2/RT\n"; + ss += "Snap transform: Left Ctrl (hold while transforming)\n"; + ss += "Camera up: E\n"; + ss += "Camera down: Q\n"; + ss += "Duplicate entity: Ctrl + D\n"; + ss += "Select All: Ctrl + A\n"; + ss += "Deselect All: Esc\n"; + ss += "Undo: Ctrl + Z\n"; + ss += "Redo: Ctrl + Y\n"; + ss += "Copy: Ctrl + C\n"; + ss += "Cut: Ctrl + X\n"; + ss += "Paste: Ctrl + V\n"; + ss += "Delete: Delete button\n"; + ss += "Save As: Ctrl + Shift + S\n"; + ss += "Save: Ctrl + S\n"; + ss += "Transform: Ctrl + T\n"; + ss += "Wireframe mode: Ctrl + W\n"; + ss += "Color grading reference: Ctrl + G (color grading palette reference will be displayed in top left corner)\n"; + ss += "Inspector mode: I button (hold), hovered entity information will be displayed near mouse position.\n"; + ss += "Place Instances: Ctrl + Shift + Left mouse click (place clipboard onto clicked surface)\n"; + ss += "Script Console / backlog: HOME button\n"; + ss += "\n"; + ss += "\nTips\n"; + ss += "-------\n"; + ss += "You can find sample scenes in the Content/models directory. Try to load one.\n"; + ss += "You can also import models from .OBJ, .GLTF, .GLB files.\n"; +#ifndef PLATFORM_UWP + ss += "You can find a program configuration file at Editor/config.ini\n"; +#endif // PLATFORM_UWP + ss += "You can find sample LUA scripts in the Content/scripts directory. Try to load one.\n"; + ss += "You can find a startup script at Editor/startup.lua (this will be executed on program start, if exists)\n"; + ss += "\nFor questions, bug reports, feedback, requests, please open an issue at:\n"; + ss += "https://github.com/turanszkij/WickedEngine/issues\n"; + + aboutLabel.Create("AboutLabel"); + aboutLabel.SetText(ss); + aboutLabel.SetVisible(false); + aboutLabel.SetColor(wi::Color(113, 183, 214, 100)); + GetGUI().AddWidget(&aboutLabel); + } + + exitButton.Create(ICON_EXIT); + exitButton.font.params.shadowColor = wi::Color::Transparent(); + exitButton.SetTooltip("Exit"); + exitButton.SetColor(wi::Color(160, 50, 50, 180), wi::gui::WIDGETSTATE::IDLE); + exitButton.SetColor(wi::Color(200, 50, 50, 255), wi::gui::WIDGETSTATE::FOCUS); + exitButton.OnClick([this](wi::gui::EventArgs args) { + terragen.Generation_Cancel(); + wi::platform::Exit(); + }); + GetGUI().AddWidget(&exitButton); + + + + //////////////////////////////////////////////////////////////////////////////////// + + + optionsWnd.Create("Options", wi::gui::Window::WindowControls::RESIZE_TOPRIGHT); + optionsWnd.SetPos(XMFLOAT2(100, 120)); + optionsWnd.SetSize(XMFLOAT2(340, 400)); + optionsWnd.SetShadowRadius(2); + GetGUI().AddWidget(&optionsWnd); + + translatorCheckBox.Create("Transform: "); + translatorCheckBox.SetTooltip("Enable the transform tool (Ctrl + T).\nTip: hold Left Ctrl to enable snap transform.\nYou can configure snap mode units in the Transform settings."); + translatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.enabled = args.bValue; + }); + optionsWnd.AddWidget(&translatorCheckBox); + + isScalatorCheckBox.Create("S: "); + isRotatorCheckBox.Create("R: "); + isTranslatorCheckBox.Create("T: "); + { + isScalatorCheckBox.SetTooltip("Scale"); + isScalatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isScalator = args.bValue; + translator.isTranslator = false; + translator.isRotator = false; + isTranslatorCheckBox.SetCheck(false); + isRotatorCheckBox.SetCheck(false); + }); + isScalatorCheckBox.SetCheck(translator.isScalator); + optionsWnd.AddWidget(&isScalatorCheckBox); + + isRotatorCheckBox.SetTooltip("Rotate"); + isRotatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isRotator = args.bValue; + translator.isScalator = false; + translator.isTranslator = false; + isScalatorCheckBox.SetCheck(false); + isTranslatorCheckBox.SetCheck(false); + }); + isRotatorCheckBox.SetCheck(translator.isRotator); + optionsWnd.AddWidget(&isRotatorCheckBox); + + isTranslatorCheckBox.SetTooltip("Translate (Move)"); + isTranslatorCheckBox.OnClick([&](wi::gui::EventArgs args) { + translator.isTranslator = args.bValue; + translator.isScalator = false; + translator.isRotator = false; + isScalatorCheckBox.SetCheck(false); + isRotatorCheckBox.SetCheck(false); + }); + isTranslatorCheckBox.SetCheck(translator.isTranslator); + optionsWnd.AddWidget(&isTranslatorCheckBox); + } + + + profilerEnabledCheckBox.Create("Profiler: "); + profilerEnabledCheckBox.SetTooltip("Toggle Profiler On/Off"); + profilerEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { + wi::profiler::SetEnabled(args.bValue); + }); + profilerEnabledCheckBox.SetCheck(wi::profiler::IsEnabled()); + optionsWnd.AddWidget(&profilerEnabledCheckBox); + + physicsEnabledCheckBox.Create("Physics: "); + physicsEnabledCheckBox.SetTooltip("Toggle Physics Simulation On/Off"); + physicsEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { + wi::physics::SetSimulationEnabled(args.bValue); + }); + physicsEnabledCheckBox.SetCheck(wi::physics::IsSimulationEnabled()); + optionsWnd.AddWidget(&physicsEnabledCheckBox); + + cinemaModeCheckBox.Create("Cinema Mode: "); + cinemaModeCheckBox.SetTooltip("Toggle Cinema Mode (All HUD disabled). Press ESC to exit."); + cinemaModeCheckBox.OnClick([&](wi::gui::EventArgs args) { + if (renderPath != nullptr) + { + renderPath->GetGUI().SetVisible(false); + } + GetGUI().SetVisible(false); + wi::profiler::SetEnabled(false); + main->infoDisplay.active = false; + }); + optionsWnd.AddWidget(&cinemaModeCheckBox); + + infoDisplayCheckBox.Create("Info Display: "); + infoDisplayCheckBox.SetTooltip("Toggle the information display (the text in top left corner)."); + infoDisplayCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.active = args.bValue; + }); + optionsWnd.AddWidget(&infoDisplayCheckBox); + infoDisplayCheckBox.SetCheck(main->infoDisplay.active); + + fpsCheckBox.Create("FPS: "); + fpsCheckBox.SetTooltip("Toggle the FPS display."); + fpsCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.fpsinfo = args.bValue; + }); + optionsWnd.AddWidget(&fpsCheckBox); + fpsCheckBox.SetCheck(main->infoDisplay.fpsinfo); + + otherinfoCheckBox.Create("Advanced: "); + otherinfoCheckBox.SetTooltip("Toggle advanced data in the info display."); + otherinfoCheckBox.OnClick([&](wi::gui::EventArgs args) { + main->infoDisplay.heap_allocation_counter = args.bValue; + main->infoDisplay.vram_usage = args.bValue; + main->infoDisplay.colorspace = args.bValue; + main->infoDisplay.resolution = args.bValue; + main->infoDisplay.logical_size = args.bValue; + main->infoDisplay.pipeline_count = args.bValue; + }); + optionsWnd.AddWidget(&otherinfoCheckBox); + otherinfoCheckBox.SetCheck(main->infoDisplay.heap_allocation_counter); + + + + + newCombo.Create("New: "); + newCombo.AddItem("...", ~0ull); + newCombo.AddItem("Transform", 0); + newCombo.AddItem("Material", 1); + newCombo.AddItem("Point Light", 2); + newCombo.AddItem("Spot Light", 3); + newCombo.AddItem("Directional Light", 4); + newCombo.AddItem("Environment Probe", 5); + newCombo.AddItem("Force", 6); + newCombo.AddItem("Decal", 7); + newCombo.AddItem("Sound", 8); + newCombo.AddItem("Weather", 9); + newCombo.AddItem("Emitter", 10); + newCombo.AddItem("HairParticle", 11); + newCombo.AddItem("Camera", 12); + newCombo.AddItem("Cube Object", 13); + newCombo.AddItem("Plane Object", 14); + newCombo.OnSelect([&](wi::gui::EventArgs args) { + newCombo.SetSelectedWithoutCallback(0); + const EditorScene& editorscene = GetCurrentEditorScene(); + const CameraComponent& camera = editorscene.camera; + Scene& scene = GetCurrentScene(); + PickResult pick; + + XMFLOAT3 in_front_of_camera; + XMStoreFloat3(&in_front_of_camera, XMVectorAdd(camera.GetEye(), camera.GetAt() * 4)); + + switch (args.userdata) + { + case 0: + pick.entity = scene.Entity_CreateTransform("transform"); + break; + case 1: + pick.entity = scene.Entity_CreateMaterial("material"); + break; + case 2: + pick.entity = scene.Entity_CreateLight("pointlight", in_front_of_camera, XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::POINT; + scene.lights.GetComponent(pick.entity)->intensity = 20; + break; + case 3: + pick.entity = scene.Entity_CreateLight("spotlight", in_front_of_camera, XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::SPOT; + scene.lights.GetComponent(pick.entity)->intensity = 100; + break; + case 4: + pick.entity = scene.Entity_CreateLight("dirlight", XMFLOAT3(0, 3, 0), XMFLOAT3(1, 1, 1), 2, 60); + scene.lights.GetComponent(pick.entity)->type = LightComponent::DIRECTIONAL; + scene.lights.GetComponent(pick.entity)->intensity = 10; + break; + case 5: + pick.entity = scene.Entity_CreateEnvironmentProbe("envprobe", in_front_of_camera); + break; + case 6: + pick.entity = scene.Entity_CreateForce("force"); + break; + case 7: + pick.entity = scene.Entity_CreateDecal("decal", "images/logo_small.png"); + scene.transforms.GetComponent(pick.entity)->RotateRollPitchYaw(XMFLOAT3(XM_PIDIV2, 0, 0)); + break; + case 8: + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Sound"; + params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + Entity entity = GetCurrentScene().Entity_CreateSound(wi::helper::GetFileNameFromPath(fileName), fileName); + + wi::Archive& archive = AdvanceHistory(); + archive << EditorComponent::HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + AddSelected(entity); + + RecordSelection(archive); + RecordEntity(archive, entity); + + RefreshEntityTree(); + soundWnd.SetEntity(entity); + }); + }); + return; + } + break; + case 9: + pick.entity = CreateEntity(); + scene.weathers.Create(pick.entity); + scene.names.Create(pick.entity) = "weather"; + break; + case 10: + pick.entity = scene.Entity_CreateEmitter("emitter"); + break; + case 11: + pick.entity = scene.Entity_CreateHair("hair"); + break; + case 12: + pick.entity = scene.Entity_CreateCamera("camera", camera.width, camera.height); + *scene.cameras.GetComponent(pick.entity) = camera; + *scene.transforms.GetComponent(pick.entity) = editorscene.camera_transform; + break; + case 13: + pick.entity = scene.Entity_CreateCube("cube"); + pick.subsetIndex = 0; + break; + case 14: + pick.entity = scene.Entity_CreatePlane("plane"); + pick.subsetIndex = 0; + break; + default: + break; + } + if (pick.entity != INVALID_ENTITY) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + AddSelected(pick); + + RecordSelection(archive); + RecordEntity(archive, pick.entity); + } + RefreshEntityTree(); + }); + newCombo.SetEnabled(true); + newCombo.SetTooltip("Create new entity"); + optionsWnd.AddWidget(&newCombo); + + + filterCombo.Create("Filter: "); + filterCombo.AddItem("All ", (uint64_t)Filter::All); + filterCombo.AddItem("Transform " ICON_TRANSFORM, (uint64_t)Filter::Transform); + filterCombo.AddItem("Material " ICON_MATERIAL, (uint64_t)Filter::Material); + filterCombo.AddItem("Mesh " ICON_MESH, (uint64_t)Filter::Mesh); + filterCombo.AddItem("Object " ICON_OBJECT, (uint64_t)Filter::Object); + filterCombo.AddItem("Environment Probe " ICON_ENVIRONMENTPROBE, (uint64_t)Filter::EnvironmentProbe); + filterCombo.AddItem("Decal " ICON_DECAL, (uint64_t)Filter::Decal); + filterCombo.AddItem("Sound " ICON_SOUND, (uint64_t)Filter::Sound); + filterCombo.AddItem("Weather " ICON_WEATHER, (uint64_t)Filter::Weather); + filterCombo.AddItem("Light " ICON_POINTLIGHT, (uint64_t)Filter::Light); + filterCombo.SetTooltip("Apply filtering to the Entities"); + filterCombo.OnSelect([&](wi::gui::EventArgs args) { + filter = (Filter)args.userdata; + RefreshEntityTree(); + }); + optionsWnd.AddWidget(&filterCombo); + + + entityTree.Create("Entities"); + entityTree.SetSize(XMFLOAT2(300, 300)); + entityTree.OnSelect([this](wi::gui::EventArgs args) { + + if (args.iValue < 0) + return; + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_SELECTION; + // record PREVIOUS selection state... + RecordSelection(archive); + + translator.selected.clear(); + + for (int i = 0; i < entityTree.GetItemCount(); ++i) + { + const wi::gui::TreeList::Item& item = entityTree.GetItem(i); + if (item.selected) + { + wi::scene::PickResult pick; + pick.entity = (Entity)item.userdata; + AddSelected(pick); + } + } + + // record NEW selection state... + RecordSelection(archive); + + }); + optionsWnd.AddWidget(&entityTree); + + + renderPathComboBox.Create("Render Path: "); + renderPathComboBox.AddItem("Default"); + renderPathComboBox.AddItem("Path Tracing"); + renderPathComboBox.OnSelect([&](wi::gui::EventArgs args) { + ChangeRenderPath((RENDERPATH)args.iValue); + }); + renderPathComboBox.SetSelected(RENDERPATH_DEFAULT); + renderPathComboBox.SetEnabled(true); + renderPathComboBox.SetTooltip("Choose a render path..."); + optionsWnd.AddWidget(&renderPathComboBox); + + + pathTraceTargetSlider.Create(1, 2048, 1024, 2047, "Sample count: "); + pathTraceTargetSlider.SetSize(XMFLOAT2(200, 18)); + pathTraceTargetSlider.SetTooltip("The path tracing will perform this many samples per pixel."); + optionsWnd.AddWidget(&pathTraceTargetSlider); + pathTraceTargetSlider.SetVisible(false); + + pathTraceStatisticsLabel.Create("Path tracing statistics"); + pathTraceStatisticsLabel.SetSize(XMFLOAT2(240, 60)); + optionsWnd.AddWidget(&pathTraceStatisticsLabel); + pathTraceStatisticsLabel.SetVisible(false); + + // Renderer and Postprocess windows are created in ChangeRenderPath(), because they deal with + // RenderPath related information as well, so it's easier to reset them when changing + + materialWnd.Create(this); + weatherWnd.Create(this); + objectWnd.Create(this); + meshWnd.Create(this); + envProbeWnd.Create(this); + soundWnd.Create(this); + decalWnd.Create(this); + lightWnd.Create(this); + animWnd.Create(this); + emitterWnd.Create(this); + hairWnd.Create(this); + forceFieldWnd.Create(this); + springWnd.Create(this); + ikWnd.Create(this); + transformWnd.Create(this); + layerWnd.Create(this); + nameWnd.Create(this); + + componentWindow.Create("Components ", wi::gui::Window::WindowControls::RESIZE_TOPLEFT); + componentWindow.SetSize(optionsWnd.GetSize()); + componentWindow.font.params.h_align = wi::font::WIFALIGN_RIGHT; + componentWindow.SetShadowRadius(2); + GetGUI().AddWidget(&componentWindow); + + newComponentCombo.Create("Add: "); + newComponentCombo.SetTooltip("Add a component to the first selected entity."); + newComponentCombo.AddItem("...", ~0ull); + newComponentCombo.AddItem("Name", 0); + newComponentCombo.AddItem("Layer " ICON_LAYER, 1); + newComponentCombo.AddItem("Transform " ICON_TRANSFORM, 2); + newComponentCombo.AddItem("Light " ICON_POINTLIGHT, 3); + newComponentCombo.AddItem("Matetial " ICON_MATERIAL, 4); + newComponentCombo.AddItem("Spring", 5); + newComponentCombo.AddItem("Inverse Kinematics", 6); + newComponentCombo.AddItem("Sound " ICON_SOUND, 7); + newComponentCombo.AddItem("Environment Probe " ICON_ENVIRONMENTPROBE, 8); + newComponentCombo.AddItem("Emitted Particle System " ICON_EMITTER, 9); + newComponentCombo.AddItem("Hair Particle System " ICON_HAIR, 10); + newComponentCombo.AddItem("Decal " ICON_DECAL, 11); + newComponentCombo.AddItem("Weather " ICON_WEATHER, 12); + newComponentCombo.AddItem("Force Field " ICON_FORCE, 13); + newComponentCombo.OnSelect([=](wi::gui::EventArgs args) { + newComponentCombo.SetSelectedWithoutCallback(0); + if (translator.selected.empty()) + return; + Scene& scene = GetCurrentScene(); + Entity entity = translator.selected.front().entity; + if (entity == INVALID_ENTITY) + { + assert(0); + return; + } + + // Can early exit before creating history entry! + switch (args.userdata) + { + case 0: + if(scene.names.Contains(entity)) + return; + break; + case 1: + if (scene.layers.Contains(entity)) + return; + break; + case 2: + if (scene.transforms.Contains(entity)) + return; + break; + case 3: + if (scene.lights.Contains(entity)) + return; + break; + case 4: + if (scene.materials.Contains(entity)) + return; + break; + case 5: + if (scene.springs.Contains(entity)) + return; + break; + case 6: + if (scene.inverse_kinematics.Contains(entity)) + return; + break; + case 7: + if (scene.inverse_kinematics.Contains(entity)) + return; + break; + case 8: + if (scene.probes.Contains(entity)) + return; + break; + case 9: + if (scene.emitters.Contains(entity)) + return; + break; + case 10: + if (scene.hairs.Contains(entity)) + return; + break; + case 11: + if (scene.decals.Contains(entity)) + return; + break; + case 12: + if (scene.weathers.Contains(entity)) + return; + break; + case 13: + if (scene.forces.Contains(entity)) + return; + break; + default: + return; + } + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_COMPONENT_DATA; + RecordEntity(archive, entity); + + switch (args.userdata) + { + case 0: + scene.names.Create(entity); + break; + case 1: + scene.layers.Create(entity); + break; + case 2: + scene.transforms.Create(entity); + break; + case 3: + scene.lights.Create(entity); + scene.aabb_lights.Create(entity); + break; + case 4: + scene.materials.Create(entity); + break; + case 5: + scene.springs.Create(entity); + break; + case 6: + scene.inverse_kinematics.Create(entity); + break; + case 7: + scene.sounds.Create(entity); + break; + case 8: + scene.probes.Create(entity); + scene.aabb_probes.Create(entity); + break; + case 9: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.emitters.Create(entity); + break; + case 10: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.hairs.Create(entity); + break; + case 11: + if (!scene.materials.Contains(entity)) + scene.materials.Create(entity); + scene.decals.Create(entity); + scene.aabb_decals.Create(entity); + break; + case 12: + scene.weathers.Create(entity); + break; + case 13: + scene.forces.Create(entity); + break; + default: + break; + } + + RecordEntity(archive, entity); + + RefreshEntityTree(); + + }); + componentWindow.AddWidget(&newComponentCombo); + + + componentWindow.AddWidget(&materialWnd); + componentWindow.AddWidget(&weatherWnd); + componentWindow.AddWidget(&objectWnd); + componentWindow.AddWidget(&meshWnd); + componentWindow.AddWidget(&envProbeWnd); + componentWindow.AddWidget(&soundWnd); + componentWindow.AddWidget(&decalWnd); + componentWindow.AddWidget(&lightWnd); + componentWindow.AddWidget(&animWnd); + componentWindow.AddWidget(&emitterWnd); + componentWindow.AddWidget(&hairWnd); + componentWindow.AddWidget(&forceFieldWnd); + componentWindow.AddWidget(&springWnd); + componentWindow.AddWidget(&ikWnd); + componentWindow.AddWidget(&transformWnd); + componentWindow.AddWidget(&layerWnd); + componentWindow.AddWidget(&nameWnd); + + materialWnd.SetVisible(false); + weatherWnd.SetVisible(false); + objectWnd.SetVisible(false); + meshWnd.SetVisible(false); + envProbeWnd.SetVisible(false); + soundWnd.SetVisible(false); + decalWnd.SetVisible(false); + lightWnd.SetVisible(false); + animWnd.SetVisible(false); + emitterWnd.SetVisible(false); + hairWnd.SetVisible(false); + forceFieldWnd.SetVisible(false); + springWnd.SetVisible(false); + ikWnd.SetVisible(false); + transformWnd.SetVisible(false); + layerWnd.SetVisible(false); + nameWnd.SetVisible(false); + + materialWnd.SetShadowRadius(shadow_expand); + weatherWnd.SetShadowRadius(shadow_expand); + objectWnd.SetShadowRadius(shadow_expand); + meshWnd.SetShadowRadius(shadow_expand); + envProbeWnd.SetShadowRadius(shadow_expand); + soundWnd.SetShadowRadius(shadow_expand); + decalWnd.SetShadowRadius(shadow_expand); + lightWnd.SetShadowRadius(shadow_expand); + animWnd.SetShadowRadius(shadow_expand); + emitterWnd.SetShadowRadius(shadow_expand); + hairWnd.SetShadowRadius(shadow_expand); + forceFieldWnd.SetShadowRadius(shadow_expand); + springWnd.SetShadowRadius(shadow_expand); + ikWnd.SetShadowRadius(shadow_expand); + transformWnd.SetShadowRadius(shadow_expand); + layerWnd.SetShadowRadius(shadow_expand); + nameWnd.SetShadowRadius(shadow_expand); + + + + cameraWnd.Create(this); + cameraWnd.ResetCam(); + cameraWnd.SetShadowRadius(shadow_expand); + cameraWnd.SetCollapsed(true); + optionsWnd.AddWidget(&cameraWnd); + + paintToolWnd.Create(this); + paintToolWnd.SetShadowRadius(shadow_expand); + paintToolWnd.SetCollapsed(true); + optionsWnd.AddWidget(&paintToolWnd); + + + + sceneComboBox.Create("Scene: "); + sceneComboBox.OnSelect([&](wi::gui::EventArgs args) { + if (args.iValue >= int(scenes.size())) + { + NewScene(); + } + SetCurrentScene(args.iValue); + }); + sceneComboBox.SetEnabled(true); + optionsWnd.AddWidget(&sceneComboBox); + + + saveModeComboBox.Create("Save Mode: "); + saveModeComboBox.AddItem("Embed resources", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); + saveModeComboBox.AddItem("No embedding", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA_BUT_DISABLE_EMBEDDING); + saveModeComboBox.AddItem("Dump to header", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); + saveModeComboBox.SetTooltip("Choose whether to embed resources (textures, sounds...) in the scene file when saving, or keep them as separate files.\nThe Dump to header option will use embedding and create a C++ header file with byte data of the scene to be used with wi::Archive serialization."); + optionsWnd.AddWidget(&saveModeComboBox); + + terragen.Create(); + terragen.SetShadowRadius(shadow_expand); + terragen.OnCollapse([&](wi::gui::EventArgs args) { if (terragen.terrainEntity == INVALID_ENTITY) { @@ -528,612 +1217,96 @@ void EditorComponent::Load() props_scene.Entity_Remove(object_entity); // The objects will be placed by terrain generator, we don't need the default object that the scene has anymore GetCurrentScene().Merge(props_scene); } + terragen.init(); RefreshEntityTree(); } - terragen.SetVisible(!terragen.IsVisible()); - if (terragen.IsVisible() && !GetCurrentScene().transforms.Contains(terragen.terrainEntity)) + if (!terragen.IsCollapsed() && !GetCurrentScene().transforms.Contains(terragen.terrainEntity)) { terragen.Generation_Restart(); RefreshEntityTree(); } - }); - GetGUI().AddWidget(&terrainWnd_Toggle); - GetGUI().AddWidget(&terragen); - - - /////////////////////// - wi::Color option_color_idle = wi::Color(100, 150, 150, 100); - wi::Color option_color_focus = wi::Color(100, 200, 200, 200); - - - weatherWnd_Toggle.Create("Weather"); - weatherWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - weatherWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - weatherWnd_Toggle.SetTooltip("Weather settings window"); - weatherWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - weatherWnd.SetVisible(!weatherWnd.IsVisible()); }); - GetGUI().AddWidget(&weatherWnd_Toggle); - - objectWnd_Toggle.Create("Object"); - objectWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - objectWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - objectWnd_Toggle.SetTooltip("Object settings window"); - objectWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - objectWnd.SetVisible(!objectWnd.IsVisible()); - }); - GetGUI().AddWidget(&objectWnd_Toggle); - - meshWnd_Toggle.Create("Mesh"); - meshWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - meshWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - meshWnd_Toggle.SetTooltip("Mesh settings window"); - meshWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - meshWnd.SetVisible(!meshWnd.IsVisible()); - }); - GetGUI().AddWidget(&meshWnd_Toggle); - - materialWnd_Toggle.Create("Material"); - materialWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - materialWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - materialWnd_Toggle.SetTooltip("Material settings window"); - materialWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - materialWnd.SetVisible(!materialWnd.IsVisible()); - }); - GetGUI().AddWidget(&materialWnd_Toggle); - - cameraWnd_Toggle.Create("Camera"); - cameraWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - cameraWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - cameraWnd_Toggle.SetTooltip("Camera settings window"); - cameraWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - cameraWnd.SetVisible(!cameraWnd.IsVisible()); - }); - GetGUI().AddWidget(&cameraWnd_Toggle); - - envProbeWnd_Toggle.Create("EnvProbe"); - envProbeWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - envProbeWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - envProbeWnd_Toggle.SetTooltip("Environment probe settings window"); - envProbeWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - envProbeWnd.SetVisible(!envProbeWnd.IsVisible()); - }); - GetGUI().AddWidget(&envProbeWnd_Toggle); - - decalWnd_Toggle.Create("Decal"); - decalWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - decalWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - decalWnd_Toggle.SetTooltip("Decal settings window"); - decalWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - decalWnd.SetVisible(!decalWnd.IsVisible()); - }); - GetGUI().AddWidget(&decalWnd_Toggle); - - soundWnd_Toggle.Create("Sound"); - soundWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - soundWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - soundWnd_Toggle.SetTooltip("Sound settings window"); - soundWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - soundWnd.SetVisible(!soundWnd.IsVisible()); - }); - GetGUI().AddWidget(&soundWnd_Toggle); - - lightWnd_Toggle.Create("Light"); - lightWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - lightWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - lightWnd_Toggle.SetTooltip("Light settings window"); - lightWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - lightWnd.SetVisible(!lightWnd.IsVisible()); - }); - GetGUI().AddWidget(&lightWnd_Toggle); - - animWnd_Toggle.Create("Animation"); - animWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - animWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - animWnd_Toggle.SetTooltip("Animation inspector window"); - animWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - animWnd.SetVisible(!animWnd.IsVisible()); - }); - GetGUI().AddWidget(&animWnd_Toggle); - - emitterWnd_Toggle.Create("Emitter"); - emitterWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - emitterWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - emitterWnd_Toggle.SetTooltip("Emitter Particle System properties"); - emitterWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - emitterWnd.SetVisible(!emitterWnd.IsVisible()); - }); - GetGUI().AddWidget(&emitterWnd_Toggle); - - hairWnd_Toggle.Create("HairParticle"); - hairWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - hairWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - hairWnd_Toggle.SetTooltip("Hair Particle System properties"); - hairWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - hairWnd.SetVisible(!hairWnd.IsVisible()); - }); - GetGUI().AddWidget(&hairWnd_Toggle); - - forceFieldWnd_Toggle.Create("ForceField"); - forceFieldWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - forceFieldWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - forceFieldWnd_Toggle.SetTooltip("Force Field properties"); - forceFieldWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - forceFieldWnd.SetVisible(!forceFieldWnd.IsVisible()); - }); - GetGUI().AddWidget(&forceFieldWnd_Toggle); - - springWnd_Toggle.Create("Spring"); - springWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - springWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - springWnd_Toggle.SetTooltip("Spring properties"); - springWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - springWnd.SetVisible(!springWnd.IsVisible()); - }); - GetGUI().AddWidget(&springWnd_Toggle); - - ikWnd_Toggle.Create("IK"); - ikWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - ikWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - ikWnd_Toggle.SetTooltip("Inverse Kinematics properties"); - ikWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - ikWnd.SetVisible(!ikWnd.IsVisible()); - }); - GetGUI().AddWidget(&ikWnd_Toggle); - - transformWnd_Toggle.Create("Transform"); - transformWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - transformWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - transformWnd_Toggle.SetTooltip("Transform properties"); - transformWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - transformWnd.SetVisible(!transformWnd.IsVisible()); - }); - GetGUI().AddWidget(&transformWnd_Toggle); - - layerWnd_Toggle.Create("Layer"); - layerWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - layerWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - layerWnd_Toggle.SetTooltip("Layer Component"); - layerWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - layerWnd.SetVisible(!layerWnd.IsVisible()); - }); - GetGUI().AddWidget(&layerWnd_Toggle); - - nameWnd_Toggle.Create("Name"); - nameWnd_Toggle.SetColor(option_color_idle, wi::gui::IDLE); - nameWnd_Toggle.SetColor(option_color_focus, wi::gui::FOCUS); - nameWnd_Toggle.SetTooltip("Name Component"); - nameWnd_Toggle.OnClick([&](wi::gui::EventArgs args) { - nameWnd.SetVisible(!nameWnd.IsVisible()); - }); - GetGUI().AddWidget(&nameWnd_Toggle); + optionsWnd.AddWidget(&terragen); - //////////////////////////////////////////////////////////////////////////////////// - translatorCheckBox.Create("Transform: "); - translatorCheckBox.SetTooltip("Enable the transform tool (Ctrl + T).\nTip: hold Left Ctrl to enable snap transform.\nYou can configure snap mode units in the Transform settings."); - translatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.enabled = args.bValue; - }); - GetGUI().AddWidget(&translatorCheckBox); + themeCombo.Create("Theme: "); + themeCombo.SetTooltip("Choose a color theme..."); + themeCombo.AddItem("Dark"); + themeCombo.AddItem("Bright"); + themeCombo.AddItem("Soft"); + themeCombo.OnSelect([=](wi::gui::EventArgs args) { - isScalatorCheckBox.Create("S: "); - isRotatorCheckBox.Create("R: "); - isTranslatorCheckBox.Create("T: "); - { - isScalatorCheckBox.SetTooltip("Scale"); - isScalatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isScalator = args.bValue; - translator.isTranslator = false; - translator.isRotator = false; - isTranslatorCheckBox.SetCheck(false); - isRotatorCheckBox.SetCheck(false); - }); - isScalatorCheckBox.SetCheck(translator.isScalator); - GetGUI().AddWidget(&isScalatorCheckBox); + // Dark theme defaults: + wi::Color theme_color_idle = wi::Color(100, 130, 150, 150); + wi::Color theme_color_focus = wi::Color(100, 180, 200, 200); + wi::Color dark_point = wi::Color(0, 0, 20, 200); // darker elements will lerp towards this - isRotatorCheckBox.SetTooltip("Rotate"); - isRotatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isRotator = args.bValue; - translator.isScalator = false; - translator.isTranslator = false; - isScalatorCheckBox.SetCheck(false); - isTranslatorCheckBox.SetCheck(false); - }); - isRotatorCheckBox.SetCheck(translator.isRotator); - GetGUI().AddWidget(&isRotatorCheckBox); - - isTranslatorCheckBox.SetTooltip("Translate (Move)"); - isTranslatorCheckBox.OnClick([&](wi::gui::EventArgs args) { - translator.isTranslator = args.bValue; - translator.isScalator = false; - translator.isRotator = false; - isScalatorCheckBox.SetCheck(false); - isRotatorCheckBox.SetCheck(false); - }); - isTranslatorCheckBox.SetCheck(translator.isTranslator); - GetGUI().AddWidget(&isTranslatorCheckBox); - } - - - saveButton.Create("Save"); - saveButton.SetTooltip("Save the current scene to a new file (Ctrl + Shift + S)"); - saveButton.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); - saveButton.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); - saveButton.OnClick([&](wi::gui::EventArgs args) { - SaveAs(); - }); - GetGUI().AddWidget(&saveButton); - - - openButton.Create("Open"); - openButton.SetTooltip("Open a scene, import a model or execute a Lua script..."); - openButton.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); - openButton.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); - openButton.OnClick([&](wi::gui::EventArgs args) { - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = ".wiscene, .obj, .gltf, .glb, .lua"; - params.extensions.push_back("wiscene"); - params.extensions.push_back("obj"); - params.extensions.push_back("gltf"); - params.extensions.push_back("glb"); - params.extensions.push_back("lua"); - wi::helper::FileDialog(params, [&](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - std::string extension = wi::helper::toUpper(wi::helper::GetExtensionFromFileName(fileName)); - if (!extension.compare("LUA")) - { - wi::lua::RunFile(fileName); - return; - } - - size_t camera_count_prev = GetCurrentScene().cameras.GetCount(); - - main->loader.addLoadingFunction([=](wi::jobsystem::JobArgs args) { - - if (!extension.compare("WISCENE")) // engine-serialized - { - wi::scene::LoadModel(GetCurrentScene(), fileName); - GetCurrentEditorScene().path = fileName; - } - else if (!extension.compare("OBJ")) // wavefront-obj - { - Scene scene; - ImportModel_OBJ(fileName, scene); - GetCurrentScene().Merge(scene); - } - else if (!extension.compare("GLTF")) // text-based gltf - { - Scene scene; - ImportModel_GLTF(fileName, scene); - GetCurrentScene().Merge(scene); - } - else if (!extension.compare("GLB")) // binary gltf - { - Scene scene; - ImportModel_GLTF(fileName, scene); - GetCurrentScene().Merge(scene); - } - }); - main->loader.onFinished([=] { - - // Detect when the new scene contains a new camera, and snap the camera onto it: - size_t camera_count = GetCurrentScene().cameras.GetCount(); - if (camera_count > 0 && camera_count > camera_count_prev) - { - Entity entity = GetCurrentScene().cameras.GetEntity(camera_count_prev); - if (entity != INVALID_ENTITY) - { - TransformComponent* camera_transform = GetCurrentScene().transforms.GetComponent(entity); - if (camera_transform != nullptr) - { - GetCurrentEditorScene().camera_transform = *camera_transform; - } - - CameraComponent* cam = GetCurrentScene().cameras.GetComponent(entity); - if (cam != nullptr) - { - GetCurrentEditorScene().camera = *cam; - // camera aspect should be always for the current screen - GetCurrentEditorScene().camera.width = (float)renderPath->GetInternalResolution().x; - GetCurrentEditorScene().camera.height = (float)renderPath->GetInternalResolution().y; - } - } - } - - main->ActivatePath(this, 0.2f, wi::Color::Black()); - weatherWnd.Update(); - RefreshEntityTree(); - RefreshSceneList(); - }); - main->ActivatePath(&main->loader, 0.2f, wi::Color::Black()); - ResetHistory(); - }); - }); - }); - GetGUI().AddWidget(&openButton); - - - closeButton.Create("Close"); - closeButton.SetTooltip("Close the current scene.\nThis will clear everything from the currently selected scene, and delete the scene.\nThis operation cannot be undone!"); - closeButton.SetColor(wi::Color(255, 130, 100, 180), wi::gui::WIDGETSTATE::IDLE); - closeButton.SetColor(wi::Color(255, 200, 150, 255), wi::gui::WIDGETSTATE::FOCUS); - closeButton.OnClick([&](wi::gui::EventArgs args) { - - terragen.Generation_Cancel(); - // This is to recreate the terragen from scratch, but it has implicitly deleted copy ctor so it's weird: - terragen.~TerrainGenerator(); - new (&terragen) TerrainGenerator; - - translator.selected.clear(); - wi::scene::Scene& scene = GetCurrentScene(); - wi::renderer::ClearWorld(scene); - objectWnd.SetEntity(INVALID_ENTITY); - meshWnd.SetEntity(INVALID_ENTITY, -1); - lightWnd.SetEntity(INVALID_ENTITY); - soundWnd.SetEntity(INVALID_ENTITY); - decalWnd.SetEntity(INVALID_ENTITY); - envProbeWnd.SetEntity(INVALID_ENTITY); - materialWnd.SetEntity(INVALID_ENTITY); - emitterWnd.SetEntity(INVALID_ENTITY); - hairWnd.SetEntity(INVALID_ENTITY); - forceFieldWnd.SetEntity(INVALID_ENTITY); - cameraWnd.SetEntity(INVALID_ENTITY); - paintToolWnd.SetEntity(INVALID_ENTITY); - springWnd.SetEntity(INVALID_ENTITY); - ikWnd.SetEntity(INVALID_ENTITY); - transformWnd.SetEntity(INVALID_ENTITY); - layerWnd.SetEntity(INVALID_ENTITY); - nameWnd.SetEntity(INVALID_ENTITY); - - RefreshEntityTree(); - ResetHistory(); - GetCurrentEditorScene().path.clear(); - - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - if (scenes.size() > 1) - { - scenes.erase(scenes.begin() + current_scene); - } - SetCurrentScene(std::max(0, current_scene - 1)); - }); - }); - GetGUI().AddWidget(&closeButton); - - - aboutButton.Create("?"); - aboutButton.SetTooltip("About..."); - aboutButton.SetColor(wi::Color(50, 160, 200, 180), wi::gui::WIDGETSTATE::IDLE); - aboutButton.SetColor(wi::Color(120, 200, 200, 255), wi::gui::WIDGETSTATE::FOCUS); - aboutButton.OnClick([&](wi::gui::EventArgs args) { - aboutLabel.SetVisible(!aboutLabel.IsVisible()); - }); - GetGUI().AddWidget(&aboutButton); - - { - std::string ss; - ss += "Wicked Engine Editor v"; - ss += wi::version::GetVersionString(); - ss += "\nCreated by Turánszki János"; - ss += "\n\nWebsite: https://wickedengine.net/"; - ss += "\nGithub page: https://github.com/turanszkij/WickedEngine"; - ss += "\nDiscord chat: https://discord.gg/CFjRYmE"; - ss += "\nYou can support the project on Patreon: https://www.patreon.com/wickedengine"; - ss += "\n\nControls\n"; - ss += "------------\n"; - ss += "Move camera: WASD, or Contoller left stick or D-pad\n"; - ss += "Look: Middle mouse button / arrow keys / controller right stick\n"; - ss += "Select: Right mouse button\n"; - ss += "Interact with water: Left mouse button when nothing is selected\n"; - ss += "Faster camera: Left Shift button or controller R2/RT\n"; - ss += "Snap transform: Left Ctrl (hold while transforming)\n"; - ss += "Camera up: E\n"; - ss += "Camera down: Q\n"; - ss += "Duplicate entity: Ctrl + D\n"; - ss += "Select All: Ctrl + A\n"; - ss += "Deselect All: Esc\n"; - ss += "Undo: Ctrl + Z\n"; - ss += "Redo: Ctrl + Y\n"; - ss += "Copy: Ctrl + C\n"; - ss += "Cut: Ctrl + X\n"; - ss += "Paste: Ctrl + V\n"; - ss += "Delete: Delete button\n"; - ss += "Save As: Ctrl + Shift + S\n"; - ss += "Save: Ctrl + S\n"; - ss += "Transform: Ctrl + T\n"; - ss += "Wireframe mode: Ctrl + W\n"; - ss += "Inspector mode: I button (hold), hovered entity information will be displayed near mouse position.\n"; - ss += "Place Instances: Ctrl + Shift + Left mouse click (place clipboard onto clicked surface)\n"; - ss += "Script Console / backlog: HOME button\n"; - ss += "\n"; - ss += "\nTips\n"; - ss += "-------\n"; - ss += "You can find sample scenes in the Content/models directory. Try to load one.\n"; - ss += "You can also import models from .OBJ, .GLTF, .GLB files.\n"; -#ifndef PLATFORM_UWP - ss += "You can find a program configuration file at Editor/config.ini\n"; -#endif // PLATFORM_UWP - ss += "You can find sample LUA scripts in the Content/scripts directory. Try to load one.\n"; - ss += "You can find a startup script at Editor/startup.lua (this will be executed on program start, if exists)\n"; - ss += "\nFor questions, bug reports, feedback, requests, please open an issue at:\n"; - ss += "https://github.com/turanszkij/WickedEngine/issues\n"; - - aboutLabel.Create("AboutLabel"); - aboutLabel.SetText(ss); - aboutLabel.SetVisible(false); - aboutLabel.SetColor(wi::Color(113, 183, 214, 100)); - GetGUI().AddWidget(&aboutLabel); - } - - exitButton.Create("X"); - exitButton.SetTooltip("Exit"); - exitButton.SetColor(wi::Color(160, 50, 50, 180), wi::gui::WIDGETSTATE::IDLE); - exitButton.SetColor(wi::Color(200, 50, 50, 255), wi::gui::WIDGETSTATE::FOCUS); - exitButton.OnClick([this](wi::gui::EventArgs args) { - terragen.Generation_Cancel(); - wi::platform::Exit(); - }); - GetGUI().AddWidget(&exitButton); - - - profilerEnabledCheckBox.Create("Profiler: "); - profilerEnabledCheckBox.SetTooltip("Toggle Profiler On/Off"); - profilerEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { - wi::profiler::SetEnabled(args.bValue); - }); - profilerEnabledCheckBox.SetCheck(wi::profiler::IsEnabled()); - GetGUI().AddWidget(&profilerEnabledCheckBox); - - physicsEnabledCheckBox.Create("Physics: "); - physicsEnabledCheckBox.SetTooltip("Toggle Physics Simulation On/Off"); - physicsEnabledCheckBox.OnClick([&](wi::gui::EventArgs args) { - wi::physics::SetSimulationEnabled(args.bValue); - }); - physicsEnabledCheckBox.SetCheck(wi::physics::IsSimulationEnabled()); - GetGUI().AddWidget(&physicsEnabledCheckBox); - - cinemaModeCheckBox.Create("Cinema Mode: "); - cinemaModeCheckBox.SetTooltip("Toggle Cinema Mode (All HUD disabled). Press ESC to exit."); - cinemaModeCheckBox.OnClick([&](wi::gui::EventArgs args) { - if (renderPath != nullptr) + switch (args.iValue) { - renderPath->GetGUI().SetVisible(false); - } - GetGUI().SetVisible(false); - wi::profiler::SetEnabled(false); - main->infoDisplay.active = false; - }); - GetGUI().AddWidget(&cinemaModeCheckBox); - - - entityTree.Create("Entities"); - entityTree.OnSelect([this](wi::gui::EventArgs args) { - - if (args.iValue < 0) - return; - - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_SELECTION; - // record PREVIOUS selection state... - RecordSelection(archive); - - translator.selected.clear(); - - for (int i = 0; i < entityTree.GetItemCount(); ++i) - { - const wi::gui::TreeList::Item& item = entityTree.GetItem(i); - if (item.selected) - { - wi::scene::PickResult pick; - pick.entity = (Entity)item.userdata; - AddSelected(pick); - } + default: + break; + case 1: + // Bright: + theme_color_idle = wi::Color(190, 200, 210, 190); + theme_color_focus = wi::Color(200, 220, 250, 230); + dark_point = wi::Color(80, 80, 90, 200); + break; + case 2: + // Soft: + theme_color_idle = wi::Color(200, 180, 190, 190); + theme_color_focus = wi::Color(240, 190, 200, 230); + dark_point = wi::Color(70, 50, 60, 220); + break; } - // record NEW selection state... - RecordSelection(archive); + wi::Color theme_color_active = wi::Color::White(); + wi::Color theme_color_deactivating = wi::Color::lerp(theme_color_focus, wi::Color::White(), 0.5f); + + auto set_theme = [&](wi::gui::Window& widget) { + widget.SetColor(theme_color_idle, wi::gui::IDLE); + widget.SetColor(theme_color_focus, wi::gui::FOCUS); + widget.SetColor(theme_color_active, wi::gui::ACTIVE); + widget.SetColor(theme_color_deactivating, wi::gui::DEACTIVATING); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.7f), wi::gui::WIDGET_ID_WINDOW_BASE); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.75f), wi::gui::WIDGET_ID_SLIDER_BASE_IDLE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SLIDER_BASE_FOCUS); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.85f), wi::gui::WIDGET_ID_SLIDER_BASE_ACTIVE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SLIDER_BASE_DEACTIVATING); + widget.SetColor(theme_color_idle, wi::gui::WIDGET_ID_SLIDER_KNOB_IDLE); + widget.SetColor(theme_color_focus, wi::gui::WIDGET_ID_SLIDER_KNOB_FOCUS); + widget.SetColor(theme_color_active, wi::gui::WIDGET_ID_SLIDER_KNOB_ACTIVE); + widget.SetColor(theme_color_deactivating, wi::gui::WIDGET_ID_SLIDER_KNOB_DEACTIVATING); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.75f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_IDLE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_FOCUS); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.85f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_ACTIVE); + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_SCROLLBAR_BASE_DEACTIVATING); + widget.SetColor(theme_color_idle, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_INACTIVE); + widget.SetColor(theme_color_focus, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_HOVER); + widget.SetColor(theme_color_active, wi::gui::WIDGET_ID_SCROLLBAR_KNOB_GRABBED); + + widget.SetColor(wi::Color::lerp(theme_color_idle, dark_point, 0.8f), wi::gui::WIDGET_ID_COMBO_DROPDOWN); + }; + set_theme(optionsWnd); + set_theme(componentWindow); + + sceneComboBox.SetColor(wi::Color(50, 100, 255, 180), wi::gui::IDLE); + sceneComboBox.SetColor(wi::Color(120, 160, 255, 255), wi::gui::FOCUS); + + saveModeComboBox.SetColor(wi::Color(50, 180, 100, 180), wi::gui::IDLE); + saveModeComboBox.SetColor(wi::Color(50, 220, 140, 255), wi::gui::FOCUS); + + materialWnd.textureSlotButton.SetColor(wi::Color::White(), wi::gui::IDLE); }); - GetGUI().AddWidget(&entityTree); - - - renderPathComboBox.Create("Render Path: "); - renderPathComboBox.AddItem("Default"); - renderPathComboBox.AddItem("Path Tracing"); - renderPathComboBox.OnSelect([&](wi::gui::EventArgs args) { - ChangeRenderPath((RENDERPATH)args.iValue); - }); - renderPathComboBox.SetSelected(RENDERPATH_DEFAULT); - renderPathComboBox.SetEnabled(true); - renderPathComboBox.SetTooltip("Choose a render path..."); - GetGUI().AddWidget(&renderPathComboBox); - - - sceneComboBox.Create("Scene: "); - sceneComboBox.OnSelect([&](wi::gui::EventArgs args) { - if (args.iValue >= int(scenes.size())) - { - NewScene(); - } - SetCurrentScene(args.iValue); - }); - sceneComboBox.SetEnabled(true); - sceneComboBox.SetColor(wi::Color(50, 100, 255, 180), wi::gui::WIDGETSTATE::IDLE); - sceneComboBox.SetColor(wi::Color(120, 160, 255, 255), wi::gui::WIDGETSTATE::FOCUS); - GetGUI().AddWidget(&sceneComboBox); - - - saveModeComboBox.Create("Save Mode: "); - saveModeComboBox.SetColor(wi::Color(50, 180, 100, 180), wi::gui::WIDGETSTATE::IDLE); - saveModeComboBox.SetColor(wi::Color(50, 220, 140, 255), wi::gui::WIDGETSTATE::FOCUS); - saveModeComboBox.AddItem("Embed resources", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); - saveModeComboBox.AddItem("No embedding", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA_BUT_DISABLE_EMBEDDING); - saveModeComboBox.AddItem("Dump to header", (uint64_t)wi::resourcemanager::Mode::ALLOW_RETAIN_FILEDATA); - saveModeComboBox.SetTooltip("Choose whether to embed resources (textures, sounds...) in the scene file when saving, or keep them as separate files.\nThe Dump to header option will use embedding and create a C++ header file with byte data of the scene to be used with wi::Archive serialization."); - GetGUI().AddWidget(&saveModeComboBox); - - - pathTraceTargetSlider.Create(1, 2048, 1024, 2047, "Path tracing sample count: "); - pathTraceTargetSlider.SetTooltip("The path tracing will perform this many samples per pixel."); - GetGUI().AddWidget(&pathTraceTargetSlider); - - pathTraceStatisticsLabel.Create("Path tracing statistics"); - GetGUI().AddWidget(&pathTraceStatisticsLabel); - - // Renderer and Postprocess windows are created in ChangeRenderPath(), because they deal with - // RenderPath related information as well, so it's easier to reset them when changing - - materialWnd.Create(this); - weatherWnd.Create(this); - objectWnd.Create(this); - meshWnd.Create(this); - cameraWnd.Create(this); - envProbeWnd.Create(this); - soundWnd.Create(this); - decalWnd.Create(this); - lightWnd.Create(this); - animWnd.Create(this); - emitterWnd.Create(this); - hairWnd.Create(this); - forceFieldWnd.Create(this); - paintToolWnd.Create(this); - springWnd.Create(this); - ikWnd.Create(this); - transformWnd.Create(this); - layerWnd.Create(this); - nameWnd.Create(this); - - wi::gui::GUI& gui = GetGUI(); - gui.AddWidget(&materialWnd); - gui.AddWidget(&weatherWnd); - gui.AddWidget(&objectWnd); - gui.AddWidget(&meshWnd); - gui.AddWidget(&cameraWnd); - gui.AddWidget(&envProbeWnd); - gui.AddWidget(&soundWnd); - gui.AddWidget(&decalWnd); - gui.AddWidget(&lightWnd); - gui.AddWidget(&animWnd); - gui.AddWidget(&emitterWnd); - gui.AddWidget(&hairWnd); - gui.AddWidget(&forceFieldWnd); - gui.AddWidget(&paintToolWnd); - gui.AddWidget(&springWnd); - gui.AddWidget(&ikWnd); - gui.AddWidget(&transformWnd); - gui.AddWidget(&layerWnd); - gui.AddWidget(&nameWnd); - - cameraWnd.ResetCam(); - - wi::jobsystem::Wait(ctx); + optionsWnd.AddWidget(&themeCombo); + themeCombo.SetSelected(0); RenderPath2D::Load(); } @@ -1188,6 +1361,7 @@ void EditorComponent::Update(float dt) } GetGUI().SetVisible(true); main->infoDisplay.active = true; + wi::profiler::SetEnabled(profilerEnabledCheckBox.GetCheck()); cinemaModeCheckBox.SetCheck(false); } @@ -1349,6 +1523,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.lights.GetCount(); ++i) { Entity entity = scene.lights.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1366,6 +1542,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.decals.GetCount(); ++i) { Entity entity = scene.decals.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1383,6 +1561,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.forces.GetCount(); ++i) { Entity entity = scene.forces.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1400,6 +1580,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.emitters.GetCount(); ++i) { Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1417,6 +1599,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.hairs.GetCount(); ++i) { Entity entity = scene.hairs.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1434,6 +1618,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.probes.GetCount(); ++i) { Entity entity = scene.probes.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); if (Sphere(transform.GetPosition(), 1).intersects(pickRay)) @@ -1453,7 +1639,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.cameras.GetCount(); ++i) { Entity entity = scene.cameras.GetEntity(i); - + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1471,6 +1658,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.armatures.GetCount(); ++i) { Entity entity = scene.armatures.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1488,6 +1677,8 @@ void EditorComponent::Update(float dt) for (size_t i = 0; i < scene.sounds.GetCount(); ++i) { Entity entity = scene.sounds.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMVECTOR disV = XMVector3LinePointDistance(XMLoadFloat3(&pickRay.origin), XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction), transform.GetPositionV()); @@ -1530,18 +1721,31 @@ void EditorComponent::Update(float dt) // if water, then put a water ripple onto it: scene.PutWaterRipple("images/ripple.png", hovered.position); } - else if (decalWnd.placementCheckBox.GetCheck() && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) + else if (decalWnd.IsEnabled() && decalWnd.placementCheckBox.GetCheck() && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) { - // if not water or softbody, put a decal on it: - static int decalselector = 0; - decalselector = (decalselector + 1) % 2; - Entity entity = scene.Entity_CreateDecal("editorDecal", (decalselector == 0 ? "images/leaf.dds" : "images/logo_small.png")); + // if not water, put a decal on it: + Entity entity = scene.Entity_CreateDecal("editorDecal", ""); + // material and decal parameters will be copied from selected: + if (scene.decals.Contains(decalWnd.entity)) + { + *scene.decals.GetComponent(entity) = *scene.decals.GetComponent(decalWnd.entity); + } + if (scene.materials.Contains(decalWnd.entity)) + { + *scene.materials.GetComponent(entity) = *scene.materials.GetComponent(decalWnd.entity); + } + // place it on picked surface: TransformComponent& transform = *scene.transforms.GetComponent(entity); transform.MatrixTransform(hovered.orientation); transform.RotateRollPitchYaw(XMFLOAT3(XM_PIDIV2, 0, 0)); - transform.Scale(XMFLOAT3(2, 2, 2)); scene.Component_Attach(entity, hovered.entity); + wi::Archive& archive = AdvanceHistory(); + archive << EditorComponent::HISTORYOP_ADD; + RecordSelection(archive); + RecordSelection(archive); + RecordEntity(archive, entity); + RefreshEntityTree(); } else @@ -1575,7 +1779,6 @@ void EditorComponent::Update(float dt) } // Select... - static bool selectAll = false; if (wi::input::Press(wi::input::MOUSE_BUTTON_RIGHT) || selectAll || clear_selected) { @@ -1590,12 +1793,11 @@ void EditorComponent::Update(float dt) selectAll = false; ClearSelected(); - for (size_t i = 0; i < scene.transforms.GetCount(); ++i) + selectAllStorage.clear(); + scene.FindAllEntities(selectAllStorage); + for (auto& entity : selectAllStorage) { - Entity entity = scene.transforms.GetEntity(i); - wi::scene::PickResult picked; - picked.entity = entity; - AddSelected(picked); + AddSelected(entity); } } else if (hovered.entity != INVALID_ENTITY) @@ -1637,174 +1839,181 @@ void EditorComponent::Update(float dt) RefreshEntityTree(); } - // Control operations... - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL)) + } + + main->infoDisplay.colorgrading_helper = false; + + // Control operations... + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL)) + { + // Color Grading helper + if (wi::input::Down((wi::input::BUTTON)'G')) { - // Toggle wireframe mode - if (wi::input::Press((wi::input::BUTTON)'W')) + main->infoDisplay.colorgrading_helper = true; + } + // Toggle wireframe mode + if (wi::input::Press((wi::input::BUTTON)'W')) + { + wi::renderer::SetWireRender(!wi::renderer::IsWireRender()); + rendererWnd.wireFrameCheckBox.SetCheck(wi::renderer::IsWireRender()); + } + // Enable transform tool + if (wi::input::Press((wi::input::BUTTON)'T')) + { + translator.enabled = !translator.enabled; + translatorCheckBox.SetCheck(translator.enabled); + } + // Save + if (wi::input::Press((wi::input::BUTTON)'S')) + { + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) || GetCurrentEditorScene().path.empty()) { - wi::renderer::SetWireRender(!wi::renderer::IsWireRender()); - rendererWnd.wireFrameCheckBox.SetCheck(wi::renderer::IsWireRender()); + SaveAs(); } - // Enable transform tool - if (wi::input::Press((wi::input::BUTTON)'T')) + else { - translator.enabled = !translator.enabled; - translatorCheckBox.SetCheck(translator.enabled); - } - // Save - if (wi::input::Press((wi::input::BUTTON)'S')) - { - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) || GetCurrentEditorScene().path.empty()) - { - SaveAs(); - } - else - { - Save(GetCurrentEditorScene().path); - } - } - // Select All - if (wi::input::Press((wi::input::BUTTON)'A')) - { - selectAll = true; - } - // Copy/Cut - if (wi::input::Press((wi::input::BUTTON)'C') || wi::input::Press((wi::input::BUTTON)'X')) - { - auto& prevSel = translator.selectedEntitiesNonRecursive; - - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(false); - clipboard << prevSel.size(); - for (auto& x : prevSel) - { - scene.Entity_Serialize(clipboard, seri, x); - } - - if (wi::input::Press((wi::input::BUTTON)'X')) - { - deleting = true; - } - } - // Paste - if (wi::input::Press((wi::input::BUTTON)'V')) - { - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - RecordSelection(archive); - - ClearSelected(); - - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(true); - size_t count; - clipboard >> count; - wi::vector addedEntities; - for (size_t i = 0; i < count; ++i) - { - wi::scene::PickResult picked; - picked.entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE); - AddSelected(picked); - addedEntities.push_back(picked.entity); - } - - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Duplicate Instances - if (wi::input::Press((wi::input::BUTTON)'D')) - { - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - RecordSelection(archive); - - auto& prevSel = translator.selectedEntitiesNonRecursive; - wi::vector addedEntities; - for (auto& x : prevSel) - { - wi::scene::PickResult picked; - picked.entity = scene.Entity_Duplicate(x); - addedEntities.push_back(picked.entity); - } - - ClearSelected(); - - for (auto& x : addedEntities) - { - AddSelected(x); - } - - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Put Instances - if (clipboard.IsOpen() && hovered.subsetIndex >= 0 && wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) - { - wi::vector addedEntities; - EntitySerializer seri; - clipboard.SetReadModeAndResetPos(true); - size_t count; - clipboard >> count; - for (size_t i = 0; i < count; ++i) - { - Entity entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE | Scene::EntitySerializeFlags::KEEP_INTERNAL_ENTITY_REFERENCES); - const HierarchyComponent* hier = scene.hierarchy.GetComponent(entity); - if (hier != nullptr) - { - scene.Component_Detach(entity); - } - TransformComponent* transform = scene.transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->translation_local = {}; -#if 0 - // orient around surface normal: - transform->MatrixTransform(hovered.orientation); -#else - // orient in random vertical rotation only: - transform->RotateRollPitchYaw(XMFLOAT3(0, wi::random::GetRandom(XM_PI), 0)); - transform->Translate(hovered.position); -#endif - transform->UpdateTransform(); - } - if (hier != nullptr) - { - scene.Component_Attach(entity, hier->parentID); - } - addedEntities.push_back(entity); - } - - wi::Archive& archive = AdvanceHistory(); - archive << HISTORYOP_ADD; - // because selection didn't change here, we record same selection state twice, it's not a bug: - RecordSelection(archive); - RecordSelection(archive); - RecordAddedEntity(archive, addedEntities); - - RefreshEntityTree(); - } - // Undo - if (wi::input::Press((wi::input::BUTTON)'Z')) - { - ConsumeHistoryOperation(true); - - RefreshEntityTree(); - } - // Redo - if (wi::input::Press((wi::input::BUTTON)'Y')) - { - ConsumeHistoryOperation(false); - - RefreshEntityTree(); + Save(GetCurrentEditorScene().path); } } + // Select All + if (wi::input::Press((wi::input::BUTTON)'A')) + { + selectAll = true; + } + // Copy/Cut + if (wi::input::Press((wi::input::BUTTON)'C') || wi::input::Press((wi::input::BUTTON)'X')) + { + auto& prevSel = translator.selectedEntitiesNonRecursive; + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(false); + clipboard << prevSel.size(); + for (auto& x : prevSel) + { + scene.Entity_Serialize(clipboard, seri, x); + } + + if (wi::input::Press((wi::input::BUTTON)'X')) + { + deleting = true; + } + } + // Paste + if (wi::input::Press((wi::input::BUTTON)'V')) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + ClearSelected(); + + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(true); + size_t count; + clipboard >> count; + wi::vector addedEntities; + for (size_t i = 0; i < count; ++i) + { + wi::scene::PickResult picked; + picked.entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE); + AddSelected(picked); + addedEntities.push_back(picked.entity); + } + + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); + } + // Duplicate Instances + if (wi::input::Press((wi::input::BUTTON)'D')) + { + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + RecordSelection(archive); + + auto& prevSel = translator.selectedEntitiesNonRecursive; + wi::vector addedEntities; + for (auto& x : prevSel) + { + wi::scene::PickResult picked; + picked.entity = scene.Entity_Duplicate(x); + addedEntities.push_back(picked.entity); + } + + ClearSelected(); + + for (auto& x : addedEntities) + { + AddSelected(x); + } + + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); + } + // Put Instances + if (clipboard.IsOpen() && hovered.subsetIndex >= 0 && wi::input::Down(wi::input::KEYBOARD_BUTTON_LSHIFT) && wi::input::Press(wi::input::MOUSE_BUTTON_LEFT)) + { + wi::vector addedEntities; + EntitySerializer seri; + clipboard.SetReadModeAndResetPos(true); + size_t count; + clipboard >> count; + for (size_t i = 0; i < count; ++i) + { + Entity entity = scene.Entity_Serialize(clipboard, seri, INVALID_ENTITY, Scene::EntitySerializeFlags::RECURSIVE | Scene::EntitySerializeFlags::KEEP_INTERNAL_ENTITY_REFERENCES); + const HierarchyComponent* hier = scene.hierarchy.GetComponent(entity); + if (hier != nullptr) + { + scene.Component_Detach(entity); + } + TransformComponent* transform = scene.transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->translation_local = {}; +#if 0 + // orient around surface normal: + transform->MatrixTransform(hovered.orientation); +#else + // orient in random vertical rotation only: + transform->RotateRollPitchYaw(XMFLOAT3(0, wi::random::GetRandom(XM_PI), 0)); + transform->Translate(hovered.position); +#endif + transform->UpdateTransform(); + } + if (hier != nullptr) + { + scene.Component_Attach(entity, hier->parentID); + } + addedEntities.push_back(entity); + } + + wi::Archive& archive = AdvanceHistory(); + archive << HISTORYOP_ADD; + // because selection didn't change here, we record same selection state twice, it's not a bug: + RecordSelection(archive); + RecordSelection(archive); + RecordEntity(archive, addedEntities); + + RefreshEntityTree(); } + // Undo + if (wi::input::Press((wi::input::BUTTON)'Z')) + { + ConsumeHistoryOperation(true); + + RefreshEntityTree(); + } + // Redo + if (wi::input::Press((wi::input::BUTTON)'Y')) + { + ConsumeHistoryOperation(false); + + RefreshEntityTree(); + } + } // Delete if (deleting) @@ -1849,6 +2058,7 @@ void EditorComponent::Update(float dt) transformWnd.SetEntity(INVALID_ENTITY); layerWnd.SetEntity(INVALID_ENTITY); nameWnd.SetEntity(INVALID_ENTITY); + weatherWnd.SetEntity(INVALID_ENTITY); } else { @@ -1880,6 +2090,7 @@ void EditorComponent::Update(float dt) transformWnd.SetEntity(picked.entity); layerWnd.SetEntity(picked.entity); nameWnd.SetEntity(picked.entity); + weatherWnd.SetEntity(picked.entity); if (picked.subsetIndex >= 0) { @@ -1950,7 +2161,7 @@ void EditorComponent::Update(float dt) // Follow camera proxy: if (cameraWnd.followCheckBox.IsEnabled() && cameraWnd.followCheckBox.GetCheck()) { - TransformComponent* proxy = scene.transforms.GetComponent(cameraWnd.proxy); + TransformComponent* proxy = scene.transforms.GetComponent(cameraWnd.entity); if (proxy != nullptr) { editorscene.camera_transform.Lerp(editorscene.camera_transform, *proxy, 1.0f - cameraWnd.followSlider.GetValue()); @@ -1988,6 +2199,8 @@ void EditorComponent::Update(float dt) wi::profiler::EndRange(profrange); RenderPath2D::Update(dt); + RefreshComponentWindow(); + RefreshOptionsWindow(); translator.Update(camera, *this); @@ -2223,9 +2436,15 @@ void EditorComponent::Render() const const XMMATRIX R = XMLoadFloat3x3(&cam.rotationMatrix); - wi::image::Params fx; - fx.customRotation = &R; - fx.customProjection = &VP; + wi::font::Params fp; + fp.customRotation = &R; + fp.customProjection = &VP; + fp.size = 32; // icon font render quality + const float scaling = 0.0025f; + fp.h_align = wi::font::WIFALIGN_CENTER; + fp.v_align = wi::font::WIFALIGN_CENTER; + fp.shadowColor = wi::Color::Shadow(); + fp.shadow_softness = 1; if (rendererWnd.GetPickType() & PICK_LIGHT) { @@ -2233,24 +2452,23 @@ void EditorComponent::Render() const { const LightComponent& light = scene.lights[i]; Entity entity = scene.lights.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } @@ -2258,13 +2476,13 @@ void EditorComponent::Render() const switch (light.GetType()) { case LightComponent::POINT: - wi::image::Draw(&pointLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_POINTLIGHT, fp, cmd); break; case LightComponent::SPOT: - wi::image::Draw(&spotLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_SPOTLIGHT, fp, cmd); break; case LightComponent::DIRECTIONAL: - wi::image::Draw(&dirLightTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_DIRECTIONALLIGHT, fp, cmd); break; default: break; @@ -2277,30 +2495,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.decals.GetCount(); ++i) { Entity entity = scene.decals.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&decalTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_DECAL, fp, cmd); } } @@ -2310,30 +2527,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.forces.GetCount(); ++i) { Entity entity = scene.forces.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&forceFieldTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_FORCE, fp, cmd); } } @@ -2342,31 +2558,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.cameras.GetCount(); ++i) { Entity entity = scene.cameras.GetEntity(i); - + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&cameraTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_CAMERA, fp, cmd); } } @@ -2375,30 +2589,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.armatures.GetCount(); ++i) { Entity entity = scene.armatures.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&armatureTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_ARMATURE, fp, cmd); } } @@ -2407,30 +2620,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.emitters.GetCount(); ++i) { Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&emitterTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_EMITTER, fp, cmd); } } @@ -2439,30 +2651,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.hairs.GetCount(); ++i) { Entity entity = scene.hairs.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&hairTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_HAIR, fp, cmd); } } @@ -2471,30 +2682,29 @@ void EditorComponent::Render() const for (size_t i = 0; i < scene.sounds.GetCount(); ++i) { Entity entity = scene.sounds.GetEntity(i); + if (!scene.transforms.Contains(entity)) + continue; const TransformComponent& transform = *scene.transforms.GetComponent(entity); - float dist = wi::math::Distance(transform.GetPosition(), camera.Eye) * 0.08f; - - fx.pos = transform.GetPosition(); - fx.siz = XMFLOAT2(dist, dist); - fx.pivot = XMFLOAT2(0.5f, 0.5f); - fx.color = inactiveEntityColor; + fp.position = transform.GetPosition(); + fp.scaling = scaling * wi::math::Distance(transform.GetPosition(), camera.Eye); + fp.color = inactiveEntityColor; if (hovered.entity == entity) { - fx.color = hoveredEntityColor; + fp.color = hoveredEntityColor; } for (auto& picked : translator.selected) { if (picked.entity == entity) { - fx.color = selectedEntityColor; + fp.color = selectedEntityColor; break; } } - wi::image::Draw(&soundTex.GetTexture(), fx, cmd); + wi::font::Draw(ICON_SOUND, fp, cmd); } } @@ -2595,6 +2805,113 @@ void EditorComponent::Compose(CommandList cmd) const RenderPath2D::Compose(cmd); } +void EditorComponent::RefreshOptionsWindow() +{ + const float padding = 4; + XMFLOAT2 pos = XMFLOAT2(padding, padding); + const float width = optionsWnd.GetWidgetAreaSize().x - padding * 2; + float x_off = 100; + + translatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + isScalatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60, pos.y)); + isRotatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 2, pos.y)); + isTranslatorCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += translatorCheckBox.GetSize().y; + pos.y += padding; + + infoDisplayCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + fpsCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 80, pos.y)); + otherinfoCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += infoDisplayCheckBox.GetSize().y; + pos.y += padding; + + cinemaModeCheckBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + profilerEnabledCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 80, pos.y)); + physicsEnabledCheckBox.SetPos(XMFLOAT2(pos.x + x_off + 60 * 3, pos.y)); + pos.y += cinemaModeCheckBox.GetSize().y; + pos.y += padding; + + sceneComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + sceneComboBox.SetSize(XMFLOAT2(width - x_off - sceneComboBox.GetScale().y - 1, sceneComboBox.GetScale().y)); + pos.y += sceneComboBox.GetSize().y; + pos.y += padding; + + saveModeComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + saveModeComboBox.SetSize(XMFLOAT2(width - x_off - saveModeComboBox.GetScale().y - 1, saveModeComboBox.GetScale().y)); + pos.y += saveModeComboBox.GetSize().y; + pos.y += padding; + + themeCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + themeCombo.SetSize(XMFLOAT2(width - x_off - themeCombo.GetScale().y - 1, themeCombo.GetScale().y)); + pos.y += themeCombo.GetSize().y; + pos.y += padding; + + renderPathComboBox.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + renderPathComboBox.SetSize(XMFLOAT2(width - x_off - renderPathComboBox.GetScale().y - 1, renderPathComboBox.GetScale().y)); + pos.y += renderPathComboBox.GetSize().y; + pos.y += padding; + + if (pathTraceTargetSlider.IsVisible()) + { + pathTraceTargetSlider.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + pathTraceTargetSlider.SetSize(XMFLOAT2(width - x_off - pathTraceTargetSlider.GetScale().y * 2 - 1, pathTraceTargetSlider.GetScale().y)); + pos.y += pathTraceTargetSlider.GetSize().y; + pos.y += padding; + } + + if (pathTraceStatisticsLabel.IsVisible()) + { + pathTraceStatisticsLabel.SetPos(pos); + pathTraceStatisticsLabel.SetSize(XMFLOAT2(width, pathTraceStatisticsLabel.GetScale().y)); + pos.y += pathTraceStatisticsLabel.GetSize().y; + pos.y += padding; + } + + rendererWnd.SetPos(pos); + rendererWnd.SetSize(XMFLOAT2(width, rendererWnd.GetScale().y)); + pos.y += rendererWnd.GetSize().y; + pos.y += padding; + + postprocessWnd.SetPos(pos); + postprocessWnd.SetSize(XMFLOAT2(width, postprocessWnd.GetScale().y)); + pos.y += postprocessWnd.GetSize().y; + pos.y += padding; + + cameraWnd.SetPos(pos); + cameraWnd.SetSize(XMFLOAT2(width, cameraWnd.GetScale().y)); + pos.y += cameraWnd.GetSize().y; + pos.y += padding; + + paintToolWnd.SetPos(pos); + paintToolWnd.SetSize(XMFLOAT2(width, paintToolWnd.GetScale().y)); + pos.y += paintToolWnd.GetSize().y; + pos.y += padding; + + terragen.SetPos(pos); + terragen.SetSize(XMFLOAT2(width, terragen.GetScale().y)); + pos.y += terragen.GetSize().y; + pos.y += padding; + + x_off = 45; + + newCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + newCombo.SetSize(XMFLOAT2(width - x_off - newCombo.GetScale().y - 1, newCombo.GetScale().y)); + pos.y += newCombo.GetSize().y; + pos.y += padding; + + filterCombo.SetPos(XMFLOAT2(pos.x + x_off, pos.y)); + filterCombo.SetSize(XMFLOAT2(width - x_off - filterCombo.GetScale().y - 1, filterCombo.GetScale().y)); + pos.y += filterCombo.GetSize().y; + pos.y += padding; + + entityTree.SetPos(pos); + entityTree.SetSize(XMFLOAT2(width, std::max(GetLogicalHeight() * 0.75f, GetLogicalHeight() - pos.y))); + pos.y += entityTree.GetSize().y; + pos.y += padding; + + + optionsWnd.Update(*this, 0); +} void EditorComponent::PushToEntityTree(wi::ecs::Entity entity, int level) { if (entitytree_added_items.count(entity) != 0) @@ -2608,18 +2925,110 @@ void EditorComponent::PushToEntityTree(wi::ecs::Entity entity, int level) item.userdata = entity; item.selected = IsSelected(entity); item.open = entitytree_opened_items.count(entity) != 0; + + // Icons: + if (scene.layers.Contains(entity)) + { + item.name += ICON_LAYER " "; + } + if (scene.transforms.Contains(entity)) + { + item.name += ICON_TRANSFORM " "; + } + if (scene.meshes.Contains(entity)) + { + item.name += ICON_MESH " "; + } + if (scene.objects.Contains(entity)) + { + item.name += ICON_OBJECT " "; + } + if (scene.rigidbodies.Contains(entity)) + { + item.name += ICON_RIGIDBODY " "; + } + if (scene.softbodies.Contains(entity)) + { + item.name += ICON_SOFTBODY " "; + } + if (scene.emitters.Contains(entity)) + { + item.name += ICON_EMITTER " "; + } + if (scene.hairs.Contains(entity)) + { + item.name += ICON_HAIR " "; + } + if (scene.forces.Contains(entity)) + { + item.name += ICON_FORCE " "; + } + if (scene.sounds.Contains(entity)) + { + item.name += ICON_SOUND " "; + } + if (scene.decals.Contains(entity)) + { + item.name += ICON_DECAL " "; + } + if (scene.cameras.Contains(entity)) + { + item.name += ICON_CAMERA " "; + } + if (scene.probes.Contains(entity)) + { + item.name += ICON_ENVIRONMENTPROBE " "; + } + if (scene.animations.Contains(entity)) + { + item.name += ICON_ANIMATION " "; + } + if (scene.armatures.Contains(entity)) + { + item.name += ICON_ARMATURE " "; + } + if (scene.lights.Contains(entity)) + { + const LightComponent* light = scene.lights.GetComponent(entity); + switch (light->type) + { + default: + case LightComponent::POINT: + item.name += ICON_POINTLIGHT " "; + break; + case LightComponent::SPOT: + item.name += ICON_SPOTLIGHT " "; + break; + case LightComponent::DIRECTIONAL: + item.name += ICON_DIRECTIONALLIGHT " "; + break; + } + } + if (scene.materials.Contains(entity)) + { + item.name += ICON_MATERIAL " "; + } + if (scene.weathers.Contains(entity)) + { + item.name += ICON_WEATHER " "; + } + if (entity == terragen.terrainEntity) + { + item.name += ICON_TERRAIN " "; + } + const NameComponent* name = scene.names.GetComponent(entity); if (name == nullptr) { - item.name = "[no_name] " + std::to_string(entity); + item.name += "[no_name] " + std::to_string(entity); } else if(name->name.empty()) { - item.name = "[name_empty] " + std::to_string(entity); + item.name += "[name_empty] " + std::to_string(entity); } else { - item.name = name->name; + item.name += name->name; } entityTree.AddItem(item); @@ -2648,61 +3057,438 @@ void EditorComponent::RefreshEntityTree() entityTree.ClearItems(); - // Add hierarchy: - for (size_t i = 0; i < scene.hierarchy.GetCount(); ++i) + if (has_flag(filter, Filter::All)) { - PushToEntityTree(scene.hierarchy[i].parentID, 0); - } - - // Any transform left that is not part of a hierarchy: - for (size_t i = 0; i < scene.transforms.GetCount(); ++i) - { - PushToEntityTree(scene.transforms.GetEntity(i), 0); - } - - // Add materials: - for (size_t i = 0; i < scene.materials.GetCount(); ++i) - { - Entity entity = scene.materials.GetEntity(i); - if (entitytree_added_items.count(entity) != 0) + // Add hierarchy: + for (size_t i = 0; i < scene.hierarchy.GetCount(); ++i) { - continue; + PushToEntityTree(scene.hierarchy[i].parentID, 0); } - - wi::gui::TreeList::Item item; - item.userdata = entity; - item.selected = IsSelected(entity); - item.open = entitytree_opened_items.count(entity) != 0; - const NameComponent* name = scene.names.GetComponent(entity); - item.name = name == nullptr ? std::to_string(entity) : name->name; - entityTree.AddItem(item); - - entitytree_added_items.insert(entity); } - // Add meshes: - for (size_t i = 0; i < scene.meshes.GetCount(); ++i) + if (has_flag(filter, Filter::Transform)) { - Entity entity = scene.meshes.GetEntity(i); - if (entitytree_added_items.count(entity) != 0) + // Any transform left that is not part of a hierarchy: + for (size_t i = 0; i < scene.transforms.GetCount(); ++i) { - continue; + PushToEntityTree(scene.transforms.GetEntity(i), 0); } + } - wi::gui::TreeList::Item item; - item.userdata = entity; - item.selected = IsSelected(entity); - item.open = entitytree_opened_items.count(entity) != 0; - const NameComponent* name = scene.names.GetComponent(entity); - item.name = name == nullptr ? std::to_string(entity) : name->name; - entityTree.AddItem(item); + // Add any left over entities that might not have had a hierarchy or transform: - entitytree_added_items.insert(entity); + if (has_flag(filter, Filter::Light)) + { + for (size_t i = 0; i < scene.lights.GetCount(); ++i) + { + PushToEntityTree(scene.lights.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Decal)) + { + for (size_t i = 0; i < scene.decals.GetCount(); ++i) + { + PushToEntityTree(scene.decals.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.cameras.GetCount(); ++i) + { + PushToEntityTree(scene.cameras.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Material)) + { + for (size_t i = 0; i < scene.materials.GetCount(); ++i) + { + PushToEntityTree(scene.materials.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Mesh)) + { + for (size_t i = 0; i < scene.meshes.GetCount(); ++i) + { + PushToEntityTree(scene.meshes.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.armatures.GetCount(); ++i) + { + PushToEntityTree(scene.armatures.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Object)) + { + for (size_t i = 0; i < scene.objects.GetCount(); ++i) + { + PushToEntityTree(scene.objects.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Weather)) + { + for (size_t i = 0; i < scene.weathers.GetCount(); ++i) + { + PushToEntityTree(scene.weathers.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::Sound)) + { + for (size_t i = 0; i < scene.sounds.GetCount(); ++i) + { + PushToEntityTree(scene.sounds.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.hairs.GetCount(); ++i) + { + PushToEntityTree(scene.hairs.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.emitters.GetCount(); ++i) + { + PushToEntityTree(scene.emitters.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.animations.GetCount(); ++i) + { + PushToEntityTree(scene.animations.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.probes.GetCount(); ++i) + { + PushToEntityTree(scene.probes.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.forces.GetCount(); ++i) + { + PushToEntityTree(scene.forces.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.rigidbodies.GetCount(); ++i) + { + PushToEntityTree(scene.rigidbodies.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.softbodies.GetCount(); ++i) + { + PushToEntityTree(scene.softbodies.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.springs.GetCount(); ++i) + { + PushToEntityTree(scene.springs.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.inverse_kinematics.GetCount(); ++i) + { + PushToEntityTree(scene.inverse_kinematics.GetEntity(i), 0); + } + } + + if (has_flag(filter, Filter::All)) + { + for (size_t i = 0; i < scene.names.GetCount(); ++i) + { + PushToEntityTree(scene.names.GetEntity(i), 0); + } } entitytree_added_items.clear(); entitytree_opened_items.clear(); } +void EditorComponent::RefreshComponentWindow() +{ + const wi::scene::Scene& scene = GetCurrentScene(); + const float padding = 4; + XMFLOAT2 pos = XMFLOAT2(padding, padding); + const float width = componentWindow.GetWidgetAreaSize().x - padding * 2; + + if (!translator.selected.empty()) + { + newComponentCombo.SetVisible(true); + newComponentCombo.SetPos(XMFLOAT2(pos.x + 35, pos.y)); + newComponentCombo.SetSize(XMFLOAT2(width - 35 - 21, 20)); + pos.y += newComponentCombo.GetSize().y; + pos.y += padding; + } + else + { + newComponentCombo.SetVisible(false); + } + + if (scene.names.Contains(nameWnd.entity)) + { + nameWnd.SetVisible(true); + nameWnd.SetPos(pos); + nameWnd.SetSize(XMFLOAT2(width, nameWnd.GetScale().y)); + nameWnd.Update(); + pos.y += nameWnd.GetSize().y; + pos.y += padding; + } + else + { + nameWnd.SetVisible(false); + } + + if (scene.layers.Contains(layerWnd.entity)) + { + layerWnd.SetVisible(true); + layerWnd.SetPos(pos); + layerWnd.SetSize(XMFLOAT2(width, layerWnd.GetScale().y)); + pos.y += layerWnd.GetSize().y; + pos.y += padding; + } + else + { + layerWnd.SetVisible(false); + } + + if (scene.transforms.Contains(transformWnd.entity)) + { + transformWnd.SetVisible(true); + transformWnd.SetPos(pos); + transformWnd.SetSize(XMFLOAT2(width, transformWnd.GetScale().y)); + pos.y += transformWnd.GetSize().y; + pos.y += padding; + } + else + { + transformWnd.SetVisible(false); + } + + if (scene.inverse_kinematics.Contains(ikWnd.entity)) + { + ikWnd.SetVisible(true); + ikWnd.SetPos(pos); + ikWnd.SetSize(XMFLOAT2(width, ikWnd.GetScale().y)); + pos.y += ikWnd.GetSize().y; + pos.y += padding; + } + else + { + ikWnd.SetVisible(false); + } + + if (scene.springs.Contains(springWnd.entity)) + { + springWnd.SetVisible(true); + springWnd.SetPos(pos); + springWnd.SetSize(XMFLOAT2(width, springWnd.GetScale().y)); + pos.y += springWnd.GetSize().y; + pos.y += padding; + } + else + { + springWnd.SetVisible(false); + } + + if (scene.forces.Contains(forceFieldWnd.entity)) + { + forceFieldWnd.SetVisible(true); + forceFieldWnd.SetPos(pos); + forceFieldWnd.SetSize(XMFLOAT2(width, forceFieldWnd.GetScale().y)); + pos.y += forceFieldWnd.GetSize().y; + pos.y += padding; + } + else + { + forceFieldWnd.SetVisible(false); + } + + if (scene.hairs.Contains(hairWnd.entity)) + { + hairWnd.SetVisible(true); + hairWnd.SetPos(pos); + hairWnd.SetSize(XMFLOAT2(width, hairWnd.GetScale().y)); + pos.y += hairWnd.GetSize().y; + pos.y += padding; + } + else + { + hairWnd.SetVisible(false); + } + + if (scene.emitters.Contains(emitterWnd.entity)) + { + emitterWnd.SetVisible(true); + emitterWnd.SetPos(pos); + emitterWnd.SetSize(XMFLOAT2(width, emitterWnd.GetScale().y)); + pos.y += emitterWnd.GetSize().y; + pos.y += padding; + } + else + { + emitterWnd.SetVisible(false); + } + + if (scene.animations.Contains(animWnd.entity)) + { + animWnd.SetVisible(true); + animWnd.SetPos(pos); + animWnd.SetSize(XMFLOAT2(width, animWnd.GetScale().y)); + pos.y += animWnd.GetSize().y; + pos.y += padding; + } + else + { + animWnd.SetVisible(false); + } + + if (scene.lights.Contains(lightWnd.entity)) + { + lightWnd.SetVisible(true); + lightWnd.SetPos(pos); + lightWnd.SetSize(XMFLOAT2(width, lightWnd.GetScale().y)); + pos.y += lightWnd.GetSize().y; + pos.y += padding; + } + else + { + lightWnd.SetVisible(false); + } + + if (scene.sounds.Contains(soundWnd.entity)) + { + soundWnd.SetVisible(true); + soundWnd.SetPos(pos); + soundWnd.SetSize(XMFLOAT2(width, soundWnd.GetScale().y)); + pos.y += soundWnd.GetSize().y; + pos.y += padding; + } + else + { + soundWnd.SetVisible(false); + } + + if (scene.decals.Contains(decalWnd.entity)) + { + decalWnd.SetVisible(true); + decalWnd.SetPos(pos); + decalWnd.SetSize(XMFLOAT2(width, decalWnd.GetScale().y)); + pos.y += decalWnd.GetSize().y; + pos.y += padding; + } + else + { + decalWnd.SetVisible(false); + } + + if (scene.probes.Contains(envProbeWnd.entity)) + { + envProbeWnd.SetVisible(true); + envProbeWnd.SetPos(pos); + envProbeWnd.SetSize(XMFLOAT2(width, envProbeWnd.GetScale().y)); + pos.y += envProbeWnd.GetSize().y; + pos.y += padding; + } + else + { + envProbeWnd.SetVisible(false); + } + + //if (scene.cameras.Contains(cameraWnd.entity)) + //{ + // cameraWnd.SetVisible(true); + // cameraWnd.SetPos(pos); + // cameraWnd.SetSize(XMFLOAT2(width, cameraWnd.GetScale().y)); + // pos.y += cameraWnd.GetSize().y; + // pos.y += padding; + //} + //else + //{ + // cameraWnd.SetVisible(false); + //} + + if (scene.materials.Contains(materialWnd.entity)) + { + materialWnd.SetVisible(true); + materialWnd.SetPos(pos); + materialWnd.SetSize(XMFLOAT2(width, materialWnd.GetScale().y)); + pos.y += materialWnd.GetSize().y; + pos.y += padding; + } + else + { + materialWnd.SetVisible(false); + } + + if (scene.meshes.Contains(meshWnd.entity)) + { + meshWnd.SetVisible(true); + meshWnd.SetPos(pos); + meshWnd.SetSize(XMFLOAT2(width, meshWnd.GetScale().y)); + pos.y += meshWnd.GetSize().y; + pos.y += padding; + } + else + { + meshWnd.SetVisible(false); + } + + if (scene.objects.Contains(objectWnd.entity)) + { + objectWnd.SetVisible(true); + objectWnd.SetPos(pos); + objectWnd.SetSize(XMFLOAT2(width, objectWnd.GetScale().y)); + pos.y += objectWnd.GetSize().y; + pos.y += padding; + } + else + { + objectWnd.SetVisible(false); + } + + if (scene.weathers.Contains(weatherWnd.entity)) + { + weatherWnd.SetVisible(true); + weatherWnd.SetPos(pos); + weatherWnd.SetSize(XMFLOAT2(width, weatherWnd.GetScale().y)); + pos.y += weatherWnd.GetSize().y; + pos.y += padding; + } + else + { + weatherWnd.SetVisible(false); + } + + componentWindow.Update(*this, 0); +} void EditorComponent::ClearSelected() { @@ -2758,12 +3544,12 @@ void EditorComponent::RecordSelection(wi::Archive& archive) const archive << x.distance; } } -void EditorComponent::RecordAddedEntity(wi::Archive& archive, wi::ecs::Entity entity) +void EditorComponent::RecordEntity(wi::Archive& archive, wi::ecs::Entity entity) { const wi::vector entities = { entity }; - RecordAddedEntity(archive, entities); + RecordEntity(archive, entities); } -void EditorComponent::RecordAddedEntity(wi::Archive& archive, const wi::vector& entities) +void EditorComponent::RecordEntity(wi::Archive& archive, const wi::vector& entities) { Scene& scene = GetCurrentScene(); EntitySerializer seri; @@ -2993,6 +3779,45 @@ void EditorComponent::ConsumeHistoryOperation(bool undo) } break; + case HISTORYOP_COMPONENT_DATA: + { + Scene before, after; + wi::vector entities_before, entities_after; + + archive >> entities_before; + for (auto& x : entities_before) + { + EntitySerializer seri; + seri.allow_remap = false; + before.Entity_Serialize(archive, seri); + } + + archive >> entities_after; + for (auto& x : entities_after) + { + EntitySerializer seri; + seri.allow_remap = false; + after.Entity_Serialize(archive, seri); + } + + if (undo) + { + for (auto& x : entities_before) + { + scene.Entity_Remove(x); + } + scene.Merge(before); + } + else + { + for (auto& x : entities_after) + { + scene.Entity_Remove(x); + } + scene.Merge(after); + } + } + break; case HISTORYOP_PAINTTOOL: paintToolWnd.ConsumeHistoryOperation(archive, undo); break; diff --git a/Editor/Editor.h b/Editor/Editor.h index 665ecdca6..861d731cf 100644 --- a/Editor/Editor.h +++ b/Editor/Editor.h @@ -26,6 +26,8 @@ #include "LayerWindow.h" #include "NameWindow.h" +#include "IconDefinitions.h" + class EditorLoadingScreen : public wi::LoadingScreen { private: @@ -39,8 +41,6 @@ public: class Editor; class EditorComponent : public wi::RenderPath2D { -private: - wi::Resource pointLightTex, spotLightTex, dirLightTex, decalTex, forceFieldTex, emitterTex, hairTex, cameraTex, armatureTex, soundTex; public: MaterialWindow materialWnd; PostprocessWindow postprocessWnd; @@ -67,51 +67,56 @@ public: Editor* main = nullptr; - wi::gui::Button rendererWnd_Toggle; - wi::gui::Button postprocessWnd_Toggle; - wi::gui::Button paintToolWnd_Toggle; - wi::gui::Button terrainWnd_Toggle; - wi::gui::Button weatherWnd_Toggle; - wi::gui::Button objectWnd_Toggle; - wi::gui::Button meshWnd_Toggle; - wi::gui::Button materialWnd_Toggle; - wi::gui::Button cameraWnd_Toggle; - wi::gui::Button envProbeWnd_Toggle; - wi::gui::Button decalWnd_Toggle; - wi::gui::Button soundWnd_Toggle; - wi::gui::Button lightWnd_Toggle; - wi::gui::Button animWnd_Toggle; - wi::gui::Button emitterWnd_Toggle; - wi::gui::Button hairWnd_Toggle; - wi::gui::Button forceFieldWnd_Toggle; - wi::gui::Button springWnd_Toggle; - wi::gui::Button ikWnd_Toggle; - wi::gui::Button transformWnd_Toggle; - wi::gui::Button layerWnd_Toggle; - wi::gui::Button nameWnd_Toggle; - wi::gui::CheckBox translatorCheckBox; - wi::gui::CheckBox isScalatorCheckBox; - wi::gui::CheckBox isRotatorCheckBox; - wi::gui::CheckBox isTranslatorCheckBox; wi::gui::Button saveButton; - wi::gui::ComboBox saveModeComboBox; wi::gui::Button openButton; wi::gui::Button closeButton; wi::gui::Button aboutButton; wi::gui::Button exitButton; + wi::gui::Label aboutLabel; + + wi::gui::Window optionsWnd; + wi::gui::CheckBox translatorCheckBox; + wi::gui::CheckBox isScalatorCheckBox; + wi::gui::CheckBox isRotatorCheckBox; + wi::gui::CheckBox isTranslatorCheckBox; wi::gui::CheckBox profilerEnabledCheckBox; wi::gui::CheckBox physicsEnabledCheckBox; wi::gui::CheckBox cinemaModeCheckBox; + wi::gui::CheckBox infoDisplayCheckBox; + wi::gui::CheckBox fpsCheckBox; + wi::gui::CheckBox otherinfoCheckBox; + wi::gui::ComboBox themeCombo; wi::gui::ComboBox renderPathComboBox; + wi::gui::ComboBox saveModeComboBox; wi::gui::ComboBox sceneComboBox; - wi::gui::Label aboutLabel; + void RefreshOptionsWindow(); + enum class Filter : uint64_t + { + Transform = 1 << 0, + Material = 1 << 1, + Mesh = 1 << 2, + Object = 1 << 3, + EnvironmentProbe = 1 << 4, + Decal = 1 << 5, + Sound = 1 << 6, + Weather = 1 << 7, + Light = 1 << 8, + + All = ~0ull, + } filter = Filter::All; + wi::gui::ComboBox newCombo; + wi::gui::ComboBox filterCombo; wi::gui::TreeList entityTree; wi::unordered_set entitytree_added_items; wi::unordered_set entitytree_opened_items; void PushToEntityTree(wi::ecs::Entity entity, int level); void RefreshEntityTree(); + wi::gui::ComboBox newComponentCombo; + wi::gui::Window componentWindow; + void RefreshComponentWindow(); + wi::gui::Slider pathTraceTargetSlider; wi::gui::Label pathTraceStatisticsLabel; @@ -162,23 +167,26 @@ public: void AddSelected(wi::ecs::Entity entity); void AddSelected(const wi::scene::PickResult& picked); bool IsSelected(wi::ecs::Entity entity) const; + bool selectAll = false; + wi::unordered_set selectAllStorage; wi::Archive clipboard; enum HistoryOperationType { - HISTORYOP_TRANSLATOR, - HISTORYOP_SELECTION, - HISTORYOP_ADD, - HISTORYOP_DELETE, - HISTORYOP_PAINTTOOL, + HISTORYOP_TRANSLATOR, // translator interaction + HISTORYOP_SELECTION, // selection changed + HISTORYOP_ADD, // entity added + HISTORYOP_DELETE, // entity removed + HISTORYOP_COMPONENT_DATA, // generic component data changed + HISTORYOP_PAINTTOOL, // paint tool interaction HISTORYOP_NONE }; void RecordSelection(wi::Archive& archive) const; - void RecordAddedEntity(wi::Archive& archive, wi::ecs::Entity entity); - void RecordAddedEntity(wi::Archive& archive, const wi::vector& entities); + void RecordEntity(wi::Archive& archive, wi::ecs::Entity entity); + void RecordEntity(wi::Archive& archive, const wi::vector& entities); void ResetHistory(); wi::Archive& AdvanceHistory(); @@ -255,3 +263,8 @@ public: void Initialize() override; }; + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; diff --git a/Editor/Editor_SOURCE.vcxitems b/Editor/Editor_SOURCE.vcxitems index 15601d3d8..4a826905b 100644 --- a/Editor/Editor_SOURCE.vcxitems +++ b/Editor/Editor_SOURCE.vcxitems @@ -128,8 +128,11 @@ + + + @@ -179,55 +182,10 @@ - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - true true - - true - true - - - - true - true - - - true - true - true true diff --git a/Editor/Editor_SOURCE.vcxitems.filters b/Editor/Editor_SOURCE.vcxitems.filters index 8736a0717..0b0e35bbc 100644 --- a/Editor/Editor_SOURCE.vcxitems.filters +++ b/Editor/Editor_SOURCE.vcxitems.filters @@ -109,6 +109,9 @@ meshoptimizer + + + @@ -134,45 +137,9 @@ - - images - - - images - - - images - - - images - - - images - - - images - - - images - - - images - images - - images - - - images - - - images - - - images - terrain diff --git a/Editor/EmitterWindow.cpp b/Editor/EmitterWindow.cpp index 0e4f99ad1..579ee1453 100644 --- a/Editor/EmitterWindow.cpp +++ b/Editor/EmitterWindow.cpp @@ -10,55 +10,32 @@ using namespace wi::scene; void EmitterWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Emitter Window"); - SetSize(XMFLOAT2(680, 420)); + wi::gui::Window::Create(ICON_EMITTER " Emitter", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 900)); - float x = 200; + closeButton.SetTooltip("Delete EmittedParticleSystem"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().emitters.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 130; float y = 0; float itemheight = 18; float step = itemheight + 2; - - - emitterNameField.Create("EmitterName"); - emitterNameField.SetPos(XMFLOAT2(x, y)); - emitterNameField.SetSize(XMFLOAT2(300, itemheight)); - emitterNameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name != nullptr) - { - *name = args.sValue; - - editor->RefreshEntityTree(); - } - }); - AddWidget(&emitterNameField); - - addButton.Create("Add Emitter"); - addButton.SetPos(XMFLOAT2(x, y += step)); - addButton.SetSize(XMFLOAT2(150, itemheight)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateEmitter("editorEmitter"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - addButton.SetTooltip("Add new emitter particle system."); - AddWidget(&addButton); + float wid = 140; restartButton.Create("Restart Emitter"); - restartButton.SetPos(XMFLOAT2(x + 160, y)); - restartButton.SetSize(XMFLOAT2(150, itemheight)); + restartButton.SetPos(XMFLOAT2(x, y)); + restartButton.SetSize(XMFLOAT2(wid, itemheight)); restartButton.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); if (emitter != nullptr) @@ -70,7 +47,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&restartButton); meshComboBox.Create("Mesh: "); - meshComboBox.SetSize(XMFLOAT2(300, itemheight)); + meshComboBox.SetSize(XMFLOAT2(wid, itemheight)); meshComboBox.SetPos(XMFLOAT2(x, y += step)); meshComboBox.SetEnabled(false); meshComboBox.OnSelect([&](wi::gui::EventArgs args) { @@ -93,16 +70,16 @@ void EmitterWindow::Create(EditorComponent* _editor) shaderTypeComboBox.Create("ShaderType: "); shaderTypeComboBox.SetPos(XMFLOAT2(x, y += step)); - shaderTypeComboBox.SetSize(XMFLOAT2(300, itemheight)); - shaderTypeComboBox.AddItem("SOFT"); - shaderTypeComboBox.AddItem("SOFT + DISTORTION"); - shaderTypeComboBox.AddItem("SIMPLEST"); - shaderTypeComboBox.AddItem("SOFT + LIGHTING"); + shaderTypeComboBox.SetSize(XMFLOAT2(wid, itemheight)); + shaderTypeComboBox.AddItem("SIMPLE", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SIMPLE); + shaderTypeComboBox.AddItem("SOFT", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT); + shaderTypeComboBox.AddItem("DISTORTION", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT_DISTORTION); + shaderTypeComboBox.AddItem("LIGHTING", wi::EmittedParticleSystem::PARTICLESHADERTYPE::SOFT_LIGHTING); shaderTypeComboBox.OnSelect([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); if (emitter != nullptr) { - emitter->shaderType = (wi::EmittedParticleSystem::PARTICLESHADERTYPE)args.iValue; + emitter->shaderType = (wi::EmittedParticleSystem::PARTICLESHADERTYPE)args.userdata; } }); shaderTypeComboBox.SetEnabled(false); @@ -110,7 +87,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&shaderTypeComboBox); - sortCheckBox.Create("Sorting Enabled: "); + sortCheckBox.Create("Sorting: "); sortCheckBox.SetPos(XMFLOAT2(x, y += step)); sortCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); sortCheckBox.OnClick([&](wi::gui::EventArgs args) { @@ -125,8 +102,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&sortCheckBox); - depthCollisionsCheckBox.Create("Depth Buffer Collisions Enabled: "); - depthCollisionsCheckBox.SetPos(XMFLOAT2(x + 250, y)); + depthCollisionsCheckBox.Create("Depth Buffer: "); + depthCollisionsCheckBox.SetPos(XMFLOAT2(x, y += step)); depthCollisionsCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); depthCollisionsCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -141,7 +118,7 @@ void EmitterWindow::Create(EditorComponent* _editor) sphCheckBox.Create("SPH - FluidSim: "); - sphCheckBox.SetPos(XMFLOAT2(x + 400, y)); + sphCheckBox.SetPos(XMFLOAT2(x, y += step)); sphCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); sphCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -171,7 +148,7 @@ void EmitterWindow::Create(EditorComponent* _editor) debugCheckBox.Create("DEBUG: "); - debugCheckBox.SetPos(XMFLOAT2(x + 120, y)); + debugCheckBox.SetPos(XMFLOAT2(x, y += step)); debugCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); debugCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -186,7 +163,7 @@ void EmitterWindow::Create(EditorComponent* _editor) volumeCheckBox.Create("Volume: "); - volumeCheckBox.SetPos(XMFLOAT2(x + 250, y)); + volumeCheckBox.SetPos(XMFLOAT2(x, y += step)); volumeCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); volumeCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -201,7 +178,7 @@ void EmitterWindow::Create(EditorComponent* _editor) frameBlendingCheckBox.Create("Frame Blending: "); - frameBlendingCheckBox.SetPos(XMFLOAT2(x + 400, y)); + frameBlendingCheckBox.SetPos(XMFLOAT2(x, y += step)); frameBlendingCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); frameBlendingCheckBox.OnClick([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -217,16 +194,16 @@ void EmitterWindow::Create(EditorComponent* _editor) infoLabel.Create("EmitterInfo"); - infoLabel.SetSize(XMFLOAT2(380, 120)); - infoLabel.SetPos(XMFLOAT2(x, y += step)); + infoLabel.SetSize(XMFLOAT2(GetSize().x - 20, 120)); + infoLabel.SetPos(XMFLOAT2(10, y += step)); AddWidget(&infoLabel); - y += 125; + y += infoLabel.GetSize().y + 5; frameRateInput.Create(""); frameRateInput.SetPos(XMFLOAT2(x, y)); - frameRateInput.SetSize(XMFLOAT2(40, 18)); + frameRateInput.SetSize(XMFLOAT2(38, 18)); frameRateInput.SetText(""); frameRateInput.SetTooltip("Enter a value to enable looping sprite sheet animation (frames per second). Set 0 for animation along paritcle lifetime."); frameRateInput.SetDescription("Frame Rate: "); @@ -240,8 +217,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&frameRateInput); framesXInput.Create(""); - framesXInput.SetPos(XMFLOAT2(x + 150, y)); - framesXInput.SetSize(XMFLOAT2(40, 18)); + framesXInput.SetPos(XMFLOAT2(x, y += step)); + framesXInput.SetSize(XMFLOAT2(38, 18)); framesXInput.SetText(""); framesXInput.SetTooltip("How many horizontal frames there are in the spritesheet."); framesXInput.SetDescription("Frames X: "); @@ -255,8 +232,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&framesXInput); framesYInput.Create(""); - framesYInput.SetPos(XMFLOAT2(x + 300, y)); - framesYInput.SetSize(XMFLOAT2(40, 18)); + framesYInput.SetPos(XMFLOAT2(x, y += step)); + framesYInput.SetSize(XMFLOAT2(38, 18)); framesYInput.SetText(""); framesYInput.SetTooltip("How many vertical frames there are in the spritesheet."); framesYInput.SetDescription("Frames Y: "); @@ -271,7 +248,7 @@ void EmitterWindow::Create(EditorComponent* _editor) frameCountInput.Create(""); frameCountInput.SetPos(XMFLOAT2(x, y += step)); - frameCountInput.SetSize(XMFLOAT2(40, 18)); + frameCountInput.SetSize(XMFLOAT2(38, 18)); frameCountInput.SetText(""); frameCountInput.SetTooltip("Enter a value to enable the random sprite sheet frame selection's max frame number."); frameCountInput.SetDescription("Frame Count: "); @@ -285,8 +262,8 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&frameCountInput); frameStartInput.Create(""); - frameStartInput.SetPos(XMFLOAT2(x + 300, y)); - frameStartInput.SetSize(XMFLOAT2(40, 18)); + frameStartInput.SetPos(XMFLOAT2(x, y += step)); + frameStartInput.SetSize(XMFLOAT2(38, 18)); frameStartInput.SetText(""); frameStartInput.SetTooltip("Specifies the starting frame of the animation."); frameStartInput.SetDescription("Start Frame: "); @@ -351,7 +328,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityXInput.SetValue(0); GravityXInput.SetDescription("Gravity: "); GravityXInput.SetTooltip("Vector X component"); - GravityXInput.SetPos(XMFLOAT2(x + 200, y)); + GravityXInput.SetPos(XMFLOAT2(x, y += step)); GravityXInput.SetSize(XMFLOAT2(38, itemheight)); GravityXInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -365,7 +342,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityYInput.Create(""); GravityYInput.SetValue(0); GravityYInput.SetTooltip("Vector Y component"); - GravityYInput.SetPos(XMFLOAT2(x + 240, y)); + GravityYInput.SetPos(XMFLOAT2(x + 40, y)); GravityYInput.SetSize(XMFLOAT2(38, itemheight)); GravityYInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -379,7 +356,7 @@ void EmitterWindow::Create(EditorComponent* _editor) GravityZInput.Create(""); GravityZInput.SetValue(0); GravityZInput.SetTooltip("Vector Z component"); - GravityZInput.SetPos(XMFLOAT2(x + 280, y)); + GravityZInput.SetPos(XMFLOAT2(x + 80, y)); GravityZInput.SetSize(XMFLOAT2(38, itemheight)); GravityZInput.OnInputAccepted([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -390,8 +367,8 @@ void EmitterWindow::Create(EditorComponent* _editor) }); AddWidget(&GravityZInput); - maxParticlesSlider.Create(100.0f, 1000000.0f, 10000, 100000, "Max particle count: "); - maxParticlesSlider.SetSize(XMFLOAT2(360, itemheight)); + maxParticlesSlider.Create(100.0f, 1000000.0f, 10000, 100000, "Max count: "); + maxParticlesSlider.SetSize(XMFLOAT2(wid, itemheight)); maxParticlesSlider.SetPos(XMFLOAT2(x, y += step)); maxParticlesSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -404,8 +381,8 @@ void EmitterWindow::Create(EditorComponent* _editor) maxParticlesSlider.SetTooltip("Set the maximum amount of particles this system can handle. This has an effect on the memory budget."); AddWidget(&maxParticlesSlider); - emitCountSlider.Create(0.0f, 10000.0f, 1.0f, 100000, "Emit count per sec: "); - emitCountSlider.SetSize(XMFLOAT2(360, itemheight)); + emitCountSlider.Create(0.0f, 10000.0f, 1.0f, 100000, "Emit: "); + emitCountSlider.SetSize(XMFLOAT2(wid, itemheight)); emitCountSlider.SetPos(XMFLOAT2(x, y += step)); emitCountSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -419,7 +396,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitCountSlider); emitSizeSlider.Create(0.01f, 10.0f, 1.0f, 100000, "Size: "); - emitSizeSlider.SetSize(XMFLOAT2(360, itemheight)); + emitSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); emitSizeSlider.SetPos(XMFLOAT2(x, y += step)); emitSizeSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -433,7 +410,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitSizeSlider); emitRotationSlider.Create(0.0f, 1.0f, 0.0f, 100000, "Rotation: "); - emitRotationSlider.SetSize(XMFLOAT2(360, itemheight)); + emitRotationSlider.SetSize(XMFLOAT2(wid, itemheight)); emitRotationSlider.SetPos(XMFLOAT2(x, y += step)); emitRotationSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -447,7 +424,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitRotationSlider); emitNormalSlider.Create(0.0f, 100.0f, 1.0f, 100000, "Normal factor: "); - emitNormalSlider.SetSize(XMFLOAT2(360, itemheight)); + emitNormalSlider.SetSize(XMFLOAT2(wid, itemheight)); emitNormalSlider.SetPos(XMFLOAT2(x, y += step)); emitNormalSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -461,7 +438,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitNormalSlider); emitScalingSlider.Create(0.0f, 100.0f, 1.0f, 100000, "Scaling: "); - emitScalingSlider.SetSize(XMFLOAT2(360, itemheight)); + emitScalingSlider.SetSize(XMFLOAT2(wid, itemheight)); emitScalingSlider.SetPos(XMFLOAT2(x, y += step)); emitScalingSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -475,7 +452,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitScalingSlider); emitLifeSlider.Create(0.0f, 100.0f, 1.0f, 10000, "Life span: "); - emitLifeSlider.SetSize(XMFLOAT2(360, itemheight)); + emitLifeSlider.SetSize(XMFLOAT2(wid, itemheight)); emitLifeSlider.SetPos(XMFLOAT2(x, y += step)); emitLifeSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -489,7 +466,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitLifeSlider); emitRandomnessSlider.Create(0.0f, 1.0f, 1.0f, 100000, "Randomness: "); - emitRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -503,7 +480,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitRandomnessSlider); emitLifeRandomnessSlider.Create(0.0f, 2.0f, 0.0f, 100000, "Life randomness: "); - emitLifeRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitLifeRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitLifeRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitLifeRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -517,7 +494,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitLifeRandomnessSlider); emitColorRandomnessSlider.Create(0.0f, 2.0f, 0.0f, 100000, "Color randomness: "); - emitColorRandomnessSlider.SetSize(XMFLOAT2(360, itemheight)); + emitColorRandomnessSlider.SetSize(XMFLOAT2(wid, itemheight)); emitColorRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); emitColorRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -531,7 +508,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitColorRandomnessSlider); emitMotionBlurSlider.Create(0.0f, 1.0f, 1.0f, 100000, "Motion blur: "); - emitMotionBlurSlider.SetSize(XMFLOAT2(360, itemheight)); + emitMotionBlurSlider.SetSize(XMFLOAT2(wid, itemheight)); emitMotionBlurSlider.SetPos(XMFLOAT2(x, y += step)); emitMotionBlurSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -545,7 +522,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&emitMotionBlurSlider); emitMassSlider.Create(0.1f, 100.0f, 1.0f, 100000, "Mass: "); - emitMassSlider.SetSize(XMFLOAT2(360, itemheight)); + emitMassSlider.SetSize(XMFLOAT2(wid, itemheight)); emitMassSlider.SetPos(XMFLOAT2(x, y += step)); emitMassSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -561,7 +538,7 @@ void EmitterWindow::Create(EditorComponent* _editor) timestepSlider.Create(-1, 0.016f, -1, 100000, "Timestep: "); - timestepSlider.SetSize(XMFLOAT2(360, itemheight)); + timestepSlider.SetSize(XMFLOAT2(wid, itemheight)); timestepSlider.SetPos(XMFLOAT2(x, y += step)); timestepSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -577,7 +554,7 @@ void EmitterWindow::Create(EditorComponent* _editor) dragSlider.Create(0, 1, 1, 100000, "Drag: "); - dragSlider.SetSize(XMFLOAT2(360, itemheight)); + dragSlider.SetSize(XMFLOAT2(wid, itemheight)); dragSlider.SetPos(XMFLOAT2(x, y += step)); dragSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -591,7 +568,7 @@ void EmitterWindow::Create(EditorComponent* _editor) AddWidget(&dragSlider); restitutionSlider.Create(0, 1, 1, 100000, "Restitution: "); - restitutionSlider.SetSize(XMFLOAT2(360, itemheight)); + restitutionSlider.SetSize(XMFLOAT2(wid, itemheight)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -608,8 +585,8 @@ void EmitterWindow::Create(EditorComponent* _editor) //////////////// SPH //////////////////////////// - sph_h_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Smoothing Radius (h): "); - sph_h_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_h_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (h): "); + sph_h_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_h_Slider.SetPos(XMFLOAT2(x, y += step)); sph_h_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -622,8 +599,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_h_Slider.SetTooltip("Set the SPH parameter: smoothing radius"); AddWidget(&sph_h_Slider); - sph_K_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Pressure Constant (K): "); - sph_K_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_K_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (K): "); + sph_K_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_K_Slider.SetPos(XMFLOAT2(x, y += step)); sph_K_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -636,8 +613,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_K_Slider.SetTooltip("Set the SPH parameter: pressure constant"); AddWidget(&sph_K_Slider); - sph_p0_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH Reference Density (p0): "); - sph_p0_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_p0_Slider.Create(0.1f, 100.0f, 1.0f, 100000, "SPH (p0): "); + sph_p0_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_p0_Slider.SetPos(XMFLOAT2(x, y += step)); sph_p0_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -650,8 +627,8 @@ void EmitterWindow::Create(EditorComponent* _editor) sph_p0_Slider.SetTooltip("Set the SPH parameter: reference density"); AddWidget(&sph_p0_Slider); - sph_e_Slider.Create(0, 10, 1.0f, 100000, "SPH Viscosity (e): "); - sph_e_Slider.SetSize(XMFLOAT2(360, itemheight)); + sph_e_Slider.Create(0, 10, 1.0f, 100000, "SPH (e): "); + sph_e_Slider.SetSize(XMFLOAT2(wid, itemheight)); sph_e_Slider.SetPos(XMFLOAT2(x, y += step)); sph_e_Slider.OnSlide([&](wi::gui::EventArgs args) { auto emitter = GetEmitter(); @@ -666,10 +643,7 @@ void EmitterWindow::Create(EditorComponent* _editor) - - - - Translate(XMFLOAT3(200, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(entity); @@ -685,7 +659,7 @@ void EmitterWindow::SetEntity(Entity entity) { SetEnabled(true); - shaderTypeComboBox.SetSelected((int)emitter->shaderType); + shaderTypeComboBox.SetSelectedByUserdataWithoutCallback((uint64_t)emitter->shaderType); sortCheckBox.SetCheck(emitter->IsSorted()); depthCollisionsCheckBox.SetCheck(emitter->IsDepthCollisionEnabled()); @@ -735,7 +709,6 @@ void EmitterWindow::SetEntity(Entity entity) SetEnabled(false); - addButton.SetEnabled(true); } } @@ -777,7 +750,6 @@ void EmitterWindow::UpdateData() } } - NameComponent* name = scene.names.GetComponent(entity); NameComponent* meshName = scene.names.GetComponent(emitter->meshID); std::string ss; @@ -793,5 +765,4 @@ void EmitterWindow::UpdateData() infoLabel.SetText(ss); - emitterNameField.SetText(name->name); } diff --git a/Editor/EmitterWindow.h b/Editor/EmitterWindow.h index bbe9425fd..fb5282f8a 100644 --- a/Editor/EmitterWindow.h +++ b/Editor/EmitterWindow.h @@ -18,8 +18,6 @@ public: wi::EmittedParticleSystem* GetEmitter(); - wi::gui::TextInputField emitterNameField; - wi::gui::Button addButton; wi::gui::Button restartButton; wi::gui::ComboBox meshComboBox; wi::gui::ComboBox shaderTypeComboBox; diff --git a/Editor/EnvProbeWindow.cpp b/Editor/EnvProbeWindow.cpp index 58aaf7dd2..a40054ed1 100644 --- a/Editor/EnvProbeWindow.cpp +++ b/Editor/EnvProbeWindow.cpp @@ -8,14 +8,29 @@ using namespace wi::scene; void EnvProbeWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Environment Probe Window"); + wi::gui::Window::Create(ICON_ENVIRONMENTPROBE " Environment Probe", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(420, 220)); + closeButton.SetTooltip("Delete EnvironmentProbeComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().probes.Remove(entity); + editor->GetCurrentScene().aabb_probes.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + float x = 5, y = 0, step = 35; infoLabel.Create(""); infoLabel.SetText("Environment probes can be used to capture the scene from a specific location in a 360 degrees panorama. The probes will be used for reflections fallback, where a better reflection type is not available. The probes can affect the ambient colors slightly.\nTip: You can scale, rotate and move the probes to set up parallax correct rendering to affect a specific area only. The parallax correction will take effect inside the probe's bounds (indicated with a cyan colored box)."); - infoLabel.SetSize(XMFLOAT2(400 - 10, 100)); + infoLabel.SetSize(XMFLOAT2(300, 100)); infoLabel.SetPos(XMFLOAT2(x, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); @@ -49,32 +64,9 @@ void EnvProbeWindow::Create(EditorComponent* _editor) }); AddWidget(&msaaCheckBox); - generateButton.Create("Put"); - generateButton.SetTooltip("Put down a new probe in front of the camera and capture the scene."); - generateButton.SetPos(XMFLOAT2(x, y += step)); - generateButton.OnClick([=](wi::gui::EventArgs args) { - XMFLOAT3 pos; - XMStoreFloat3(&pos, XMVectorAdd(editor->GetCurrentEditorScene().camera.GetEye(), editor->GetCurrentEditorScene().camera.GetAt() * 4)); - Entity entity = editor->GetCurrentScene().Entity_CreateEnvironmentProbe("editorProbe", pos); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - AddWidget(&generateButton); - refreshButton.Create("Refresh"); refreshButton.SetTooltip("Re-renders the selected probe."); - refreshButton.SetPos(XMFLOAT2(x + 120, y)); + refreshButton.SetPos(XMFLOAT2(x, y+= step)); refreshButton.SetEnabled(false); refreshButton.OnClick([&](wi::gui::EventArgs args) { EnvironmentProbeComponent* probe = editor->GetCurrentScene().probes.GetComponent(entity); @@ -87,7 +79,7 @@ void EnvProbeWindow::Create(EditorComponent* _editor) refreshAllButton.Create("Refresh All"); refreshAllButton.SetTooltip("Re-renders all probes in the scene."); - refreshAllButton.SetPos(XMFLOAT2(x + 240, y)); + refreshAllButton.SetPos(XMFLOAT2(x + 120, y)); refreshAllButton.SetEnabled(true); refreshAllButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -102,7 +94,7 @@ void EnvProbeWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(100, 100, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/EnvProbeWindow.h b/Editor/EnvProbeWindow.h index 7434e4368..8d288c5e5 100644 --- a/Editor/EnvProbeWindow.h +++ b/Editor/EnvProbeWindow.h @@ -15,7 +15,6 @@ public: wi::gui::Label infoLabel; wi::gui::CheckBox realTimeCheckBox; wi::gui::CheckBox msaaCheckBox; - wi::gui::Button generateButton; wi::gui::Button refreshButton; wi::gui::Button refreshAllButton; }; diff --git a/Editor/FontAwesomeV6.h b/Editor/FontAwesomeV6.h new file mode 100644 index 000000000..b7d20cbca --- /dev/null +++ b/Editor/FontAwesomeV6.h @@ -0,0 +1,12188 @@ +const uint8_t font_awesome_v6[] = { +0,1,0,0,0,10,0,128,0,3,0,32,79,83,47,50,97,75,98,74,0,0,1,40,0,0,0,96,99,109,97,112, +85,100,88,117,0,0,23,64,0,0,72,110,103,108,121,102,15,69,38,190,0,0,117,108,0,5,45,12,104,101,97,100, +34,167,243,194,0,0,0,172,0,0,0,54,104,104,101,97,4,66,7,173,0,0,0,228,0,0,0,36,104,109,116,120, +233,75,15,86,0,0,1,136,0,0,21,184,108,111,99,97,13,243,146,188,0,0,95,176,0,0,21,188,109,97,120,112, +5,133,1,124,0,0,1,8,0,0,0,32,110,97,109,101,46,201,149,195,0,5,162,120,0,0,3,237,112,111,115,116, +174,201,195,53,0,5,166,104,0,0,76,210,0,1,0,0,3,1,5,0,23,26,205,60,95,15,60,245,0,11,2,0, +0,0,0,0,223,4,87,34,0,0,0,0,223,4,87,34,0,0,255,192,2,128,1,192,0,0,0,8,0,2,0,1, +0,0,0,0,0,1,0,0,1,192,255,192,0,0,2,128,255,255,255,254,2,128,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,5,110,0,1,0,0,5,110,1,122,0,21,0,0,0,0,0,1,0,0,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,4,2,2,3,132,0,5,0,0,1,76,1,102,0,0,0,71,1,76,1,102,0,0, +0,245,0,25,0,132,0,0,2,0,9,3,0,0,0,0,0,0,0,0,0,1,16,0,0,0,0,0,0,0,0,0, +0,0,65,87,83,77,0,128,0,33,255,255,1,192,255,192,0,0,1,192,0,64,0,0,0,1,0,0,0,0,1,57, +1,165,0,0,0,32,0,0,1,128,0,0,0,128,0,24,1,192,0,0,1,64,0,16,1,128,0,0,1,192,0,25, +1,192,0,16,1,64,0,0,1,0,0,0,1,64,0,0,1,64,0,0,1,128,0,0,1,64,0,0,1,64,0,0, +1,64,0,0,1,64,0,0,1,64,0,0,1,128,0,0,1,192,0,16,1,128,0,0,1,64,0,0,2,0,0,16, +1,128,0,0,1,64,0,0,1,128,255,255,1,128,0,0,1,64,0,0,1,64,0,0,1,192,0,1,1,128,0,0, +1,64,0,0,1,64,0,0,1,64,0,0,1,64,0,32,1,192,0,0,1,128,0,0,1,192,0,0,1,64,0,0, +1,192,0,0,1,64,0,0,1,128,0,31,1,128,0,0,1,128,0,0,1,128,0,0,2,64,0,0,1,128,0,0, +1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,64,0,32,2,0,0,0,2,64,0,0,2,128,0,0,2,64,0,32,2,128,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,0,2,128,0,0, +2,64,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,16,2,0,0,0,2,0,0,0,1,192,0,16, +2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,2,64,0,0,2,64,0,0,1,192,0,0,1,192,0,0,1,64,0,0,1,64,0,0,1,128,0,0, +1,192,0,0,2,0,0,0,1,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,64,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,0,0,0,2,64,0,0, +1,128,0,0,2,0,0,0,1,64,0,0,1,128,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,64,0,0, +1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,2,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0, +1,128,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,0, +2,0,0,0,1,128,0,0,2,64,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,1,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,0,1,64,0,0,1,128,0,0,2,64,0,5,1,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0, +2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,16,2,128,0,0, +2,0,0,33,2,0,0,0,2,128,0,0,2,0,0,0,2,128,0,8,1,192,0,0,2,0,0,0,2,64,0,0, +2,0,0,0,1,64,0,32,1,64,0,32,2,0,0,0,2,128,0,0,2,64,0,0,2,128,0,32,2,128,0,32, +2,128,0,32,2,128,0,32,2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,1,128,0,0,2,64,0,0, +2,128,0,0,1,192,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,128,0,0,2,64,0,0,2,128,0,0,1,128,0,0,1,128,0,0,2,0,0,9,2,0,0,0, +2,128,0,0,2,128,0,32,2,128,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,34,2,0,0,0,2,128,0,32,2,64,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,64,0,0,1,64,0,0,1,64,0,0,2,64,0,32,1,128,0,0,2,64,0,0, +2,64,0,0,2,0,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0, +2,128,0,3,2,128,0,0,2,128,0,0,1,64,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0, +2,128,0,0,2,64,0,31,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,64,0,0, +2,64,0,8,2,128,0,0,2,128,0,0,2,128,0,0,1,192,0,0,2,128,0,3,1,128,0,0,2,128,0,32, +2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,3,2,64,0,0, +1,192,0,32,2,128,0,0,1,64,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +2,64,0,15,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,3,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,32,2,128,0,32,2,128,0,32,2,128,0,32, +2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,64,0,0,2,128,0,0, +1,128,0,0,2,0,0,16,2,0,0,16,2,0,0,16,1,192,0,0,1,192,0,0,1,192,0,0,1,128,0,0, +2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,7, +2,128,0,0,1,64,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,32,2,128,0,0,2,0,0,32,2,128,0,0,1,64,0,0, +1,128,0,16,2,64,0,0,2,64,0,0,2,128,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,24,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,1,64,0,0,2,0,0,0,2,0,0,0,2,0,0,16,2,64,0,0,2,0,0,14, +2,64,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,32,2,0,0,16,2,64,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,1,64,0,0,1,192,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,192,0,0,1,128,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,128,0,0, +1,128,0,0,2,64,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,0,0,16, +2,0,0,26,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0,2,0,0,0,1,128,0,16,2,0,0,0, +2,0,0,0,1,64,0,0,2,0,0,0,2,0,0,0,1,128,0,0,1,64,0,0,1,128,0,0,2,0,0,0, +2,0,0,0,1,64,0,0,1,192,0,0,1,64,0,0,1,64,0,64,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,128,0,0, +1,128,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,192,0,16,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,64,0,0,2,128,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,2,128,0,24,2,64,0,0,2,0,0,0,2,64,0,0,1,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,3,2,128,0,0,2,64,0,24,2,0,0,0, +1,128,0,0,1,192,0,0,2,0,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,0,0,0,1,192,0,0, +1,192,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,32,1,192,0,32,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,1, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,128,0,18,2,128,0,0,1,192,0,0, +2,0,0,0,2,0,0,0,1,192,0,4,1,192,0,0,1,192,0,0,1,192,0,0,2,0,0,16,2,64,0,39, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0,1,64,0,0,1,64,0,0, +1,0,0,0,1,0,0,64,2,0,0,0,1,64,0,0,1,64,0,0,1,64,0,0,2,0,0,0,2,0,0,16, +2,0,0,0,1,128,0,0,2,64,0,0,2,64,0,0,2,0,0,0,1,128,0,16,2,0,0,0,2,128,0,0, +2,128,0,0,1,192,0,0,2,64,0,32,2,0,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,2,128,0,0,2,0,0,32,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,32,1,128,0,0, +1,128,0,0,1,0,0,0,1,0,0,32,1,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0,1,128,0,16, +1,192,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0, +2,64,0,0,2,64,0,32,2,64,0,0,2,128,0,0,2,64,0,0,1,192,0,16,2,0,0,0,1,192,0,0, +2,128,0,0,0,192,0,0,2,0,0,0,2,0,0,0,2,0,0,7,2,0,0,0,1,128,0,16,2,128,0,0, +2,0,0,15,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,64,0,0,1,192,0,0,2,0,0,0,1,192,0,8,0,128,0,8,1,192,0,0,2,0,0,0,2,64,0,0, +1,192,0,0,1,128,0,0,1,128,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,1,128,0,32,1,64,0,0,1,192,0,0,1,64,0,0,1,128,0,0, +2,0,0,0,1,128,0,0,1,128,0,0,2,0,0,7,2,0,0,8,2,64,0,7,2,64,0,8,2,0,0,7, +2,0,0,8,2,0,0,0,2,0,0,0,1,64,0,0,1,64,0,0,2,0,0,0,2,0,0,0,1,64,0,0, +1,64,0,0,2,0,0,0,2,0,0,32,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +1,64,0,0,2,128,0,0,1,192,0,0,2,0,0,0,2,128,0,0,2,128,0,0,2,0,0,0,1,128,0,0, +1,64,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,64,0,32,1,192,0,0, +1,192,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0, +1,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,1,192,0,32, +2,0,0,0,1,192,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0, +2,0,0,0,2,128,0,0,1,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,64,0,32, +1,192,0,0,2,0,0,0,2,64,0,32,2,0,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,64,0,32, +2,64,0,0,1,192,0,0,2,64,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,128,0,0, +2,0,0,0,2,64,0,32,1,128,0,16,1,192,255,255,1,128,0,16,2,0,0,96,2,0,0,0,2,128,0,16, +2,128,0,0,2,128,0,0,2,0,0,32,1,128,0,15,2,128,0,32,1,128,0,16,1,128,0,16,2,0,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,1,192,0,0,1,192,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,1,64,0,0,1,0,0,0,2,64,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,192,0,32,2,0,0,0,2,0,0,0, +2,0,0,0,2,64,0,32,1,192,0,0,2,0,0,32,2,128,0,0,2,0,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,1,192,0,0,1,192,0,0,2,64,0,32,1,64,0,32,2,0,0,6,2,64,0,0,2,0,255,255, +2,0,0,0,2,0,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,128,0,0, +2,0,0,0,2,0,0,32,2,64,0,0,2,0,0,0,1,128,0,0,2,64,0,0,1,64,0,16,1,64,0,16, +1,64,0,16,1,64,0,16,1,64,0,16,2,0,0,0,2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,1,192,0,0,2,0,0,0,2,0,0,31,2,0,0,0,1,192,0,0,2,0,0,16,1,192,0,0, +2,0,0,16,1,192,0,16,2,0,0,0,2,0,0,0,2,0,0,32,2,0,0,0,2,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,1,64,0,31,2,0,0,0,2,0,0,0,1,64,0,31,2,64,0,0,1,192,0,0, +1,128,0,0,2,0,255,255,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0, +1,128,0,0,2,64,0,0,1,128,0,0,1,128,0,16,1,128,0,16,1,128,0,16,1,128,0,16,2,64,0,0, +2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,15,1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,64,0,0,1,192,0,0,1,192,0,0,1,128,0,0,1,64,0,0,2,0,0,0,1,128,0,0,2,128,0,0, +2,0,0,16,1,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0,1,128,0,0,2,64,0,0,1,128,0,0,1,128,0,0, +2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,1,128,0,0,1,192,0,0,2,64,0,0,2,0,0,0, +2,64,0,0,2,0,0,0,2,128,0,0,2,64,0,0,1,128,0,0,1,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,0,0,0,2,128,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,0,0,0,2,128,0,14,2,0,0,1,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,64,0,0, +2,64,0,0,2,64,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,3,2,128,0,0, +2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,128,0,7, +2,128,0,0,2,128,0,0,1,64,0,16,2,128,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0, +2,128,0,0,2,128,0,0,2,0,0,32,2,128,0,0,2,128,0,0,2,0,0,32,2,128,0,0,2,128,0,0, +2,128,0,0,1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,64,0,0,2,64,0,0, +2,128,0,0,2,64,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,255,255, +2,128,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,16, +2,64,0,0,2,64,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,128,0,4, +2,128,0,0,2,64,0,0,1,192,0,0,2,64,0,0,2,128,0,0,2,64,0,0,2,64,0,0,2,64,0,0, +2,64,0,0,1,192,0,16,2,0,0,0,1,192,0,0,2,64,0,0,1,128,0,0,2,128,0,0,2,0,0,4, +2,0,0,0,2,128,0,0,1,0,0,0,2,128,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0, +2,64,0,15,2,128,0,0,2,0,0,0,2,0,0,16,2,0,0,0,2,128,0,0,1,64,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,1,192,0,0,1,128,0,0,2,64,0,0,2,128,0,0,2,0,0,32,1,128,0,0, +1,192,0,0,2,64,0,31,1,192,0,0,2,64,0,0,2,0,0,0,2,0,0,16,2,0,0,16,2,0,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,2,0,255,255,1,128,0,0,1,128,0,0, +2,64,0,0,2,0,0,0,1,128,0,0,1,128,0,0,1,128,0,0,2,64,0,0,1,128,0,0,2,0,0,3, +2,64,0,3,2,0,255,255,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0, +1,64,0,0,2,0,0,0,2,0,0,0,2,64,0,16,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,64,0,0, +2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,2,2,0,0,2,2,0,0,0,2,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,1,2,64,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,64,0,24,1,192,0,32,2,0,0,0,2,0,0,0,2,64,0,0,2,64,0,0,2,128,0,0, +2,0,0,0,1,192,0,32,2,128,0,0,1,192,0,0,2,0,0,0,1,64,0,16,2,0,0,0,1,192,0,0, +2,0,0,32,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,3,2,128,0,0, +2,64,0,0,2,0,0,0,1,192,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,19,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +2,64,0,0,2,64,0,0,2,128,0,0,1,64,0,0,2,128,0,0,2,128,0,0,2,64,0,0,1,64,0,0, +1,192,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,16,1,192,0,0, +2,64,0,0,2,64,0,31,2,0,0,0,2,128,0,32,2,128,0,0,2,128,0,0,2,0,0,0,2,128,0,0, +2,0,0,0,2,128,0,0,1,192,0,0,1,192,0,0,1,128,0,0,2,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,2,64,0,32,2,64,0,0,2,0,0,0,2,0,0,16,2,128,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,64,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,64,0,0,2,64,0,32,1,192,0,0, +2,64,255,255,2,128,0,0,2,128,0,0,2,0,0,16,1,192,0,0,2,64,0,0,2,128,255,255,2,0,0,0, +2,0,0,0,1,128,0,0,1,192,0,32,1,128,0,0,2,64,0,0,2,128,0,0,2,0,0,0,1,128,0,0, +2,128,0,0,2,64,0,0,2,64,0,0,1,128,0,0,2,64,0,0,2,0,0,0,2,128,0,0,2,128,0,0, +2,0,0,0,1,192,0,16,2,64,0,0,1,192,0,0,2,128,0,0,2,64,0,12,2,64,0,0,2,128,0,0, +1,192,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,32,2,64,0,0,2,0,0,0, +2,0,0,0,2,128,0,32,2,128,0,0,2,64,0,32,1,192,0,32,2,0,0,0,2,0,0,0,2,64,0,0, +1,192,0,0,2,128,0,0,2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0, +2,0,0,0,2,64,0,0,2,64,0,0,1,192,0,32,2,0,0,0,2,64,0,0,2,0,0,0,1,192,0,0, +1,192,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,255,255,2,64,0,0,2,128,0,0,2,0,0,0, +2,128,0,0,2,128,0,0,2,0,0,0,2,0,0,0,1,192,0,0,0,192,0,0,2,0,0,0,2,0,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,9,2,0,0,16, +2,128,0,0,2,0,0,0,2,0,0,0,1,128,0,0,1,128,0,0,1,192,0,0,2,0,0,0,2,64,0,0, +2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,128,0,0,1,128,0,0,1,192,0,0,2,0,0,0, +2,0,0,0,1,128,0,0,2,64,0,0,1,192,0,0,2,0,0,0,2,0,0,0,2,64,0,0,1,128,0,0, +2,0,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,64,0,0,2,0,0,16,1,192,0,32,2,64,0,0, +2,64,0,0,2,0,0,0,1,192,0,32,2,128,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0, +1,192,0,0,2,0,0,0,1,192,0,0,1,192,0,0,1,192,0,0,2,128,0,0,2,128,0,0,1,192,0,0, +1,192,0,0,1,192,0,0,2,64,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,192,0,0,2,128,0,0, +2,128,0,0,2,0,0,7,2,0,0,8,2,64,0,7,2,64,0,8,2,0,0,7,2,0,0,8,2,64,0,0, +2,128,0,0,2,128,0,0,2,128,0,0,1,128,0,0,2,0,0,0,2,0,0,0,1,128,0,0,2,128,0,0, +0,0,0,4,0,0,0,3,0,0,0,36,0,0,0,4,0,0,24,118,0,3,0,1,0,0,0,36,0,3,0,10, +0,0,24,118,0,4,24,82,0,0,5,158,4,0,0,9,1,158,0,33,0,37,0,43,0,57,0,90,0,97,0,98, +0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114, +0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,163,0,165,0,169,0,171,0,174,0,182,0,187,0,215, +0,247,32,19,32,28,32,29,32,57,32,58,32,164,32,168,32,169,32,170,32,172,32,180,32,184,32,189,33,34,33,144, +33,145,33,146,33,147,33,148,33,149,33,151,33,186,33,187,33,196,34,18,34,30,35,3,35,4,35,27,35,40,35,41, +35,42,35,43,35,153,35,207,35,233,35,234,35,237,35,238,35,241,35,243,35,248,35,249,35,251,35,254,36,189,37,160, +37,182,37,207,37,208,37,251,37,252,38,0,38,1,38,3,38,4,38,17,38,21,38,29,38,32,38,34,38,35,38,37, +38,42,38,44,38,46,38,47,38,56,38,57,38,63,38,64,38,66,38,90,38,91,38,92,38,93,38,94,38,95,38,101, +38,102,38,114,38,122,38,123,38,126,38,128,38,129,38,130,38,131,38,132,38,133,38,147,38,150,38,153,38,155,38,160, +38,161,38,162,38,163,38,164,38,165,38,166,38,167,38,168,38,169,38,170,38,171,38,178,38,189,38,190,38,196,38,197, +38,198,38,223,38,233,38,234,38,247,38,250,38,253,39,0,39,2,39,4,39,5,39,9,39,10,39,11,39,12,39,15, +39,17,39,18,39,19,39,20,39,21,39,22,39,29,39,33,39,49,39,68,39,70,39,76,39,78,39,83,39,84,39,85, +39,87,39,100,39,149,39,150,39,151,41,52,41,53,43,13,43,27,43,28,43,36,43,80,224,6,224,13,224,18,224,65, +224,118,224,134,224,152,224,154,224,169,224,172,224,180,224,183,224,187,224,207,224,216,224,223,224,228,225,49,225,60,225,64, +225,82,225,99,225,105,225,109,225,123,225,133,225,143,225,155,225,168,225,176,225,188,225,196,225,200,225,211,225,213,225,215, +225,237,225,243,225,246,225,254,226,9,226,34,226,45,226,61,226,137,226,156,226,183,226,187,226,197,226,202,226,206,226,235, +227,30,227,175,227,178,227,245,228,60,228,69,228,72,228,108,228,115,228,119,228,123,228,144,228,148,228,165,228,173,228,176, +228,179,228,204,228,222,228,230,228,235,228,237,228,238,229,3,229,37,229,47,229,79,229,88,229,111,229,116,229,135,229,143, +229,154,229,157,229,161,229,170,229,175,229,180,240,2,240,3,240,5,240,6,240,14,240,19,240,20,240,21,240,22,240,25, +240,26,240,27,240,28,240,29,240,30,240,62,240,64,240,68,240,69,240,70,240,78,240,91,240,92,240,93,240,94,240,102, +240,103,240,104,240,105,240,110,240,126,240,128,240,134,240,135,240,136,240,137,240,138,240,139,240,142,240,145,240,149,240,150, +240,151,240,152,240,158,240,161,240,162,240,174,240,178,240,206,240,209,240,222,240,224,240,227,240,228,240,229,240,230,240,238, +240,244,240,245,240,246,240,247,240,254,241,7,241,8,241,11,241,12,241,14,241,17,241,18,241,20,241,21,241,28,241,29, +241,30,241,34,241,35,241,39,241,40,241,41,241,42,241,46,241,53,241,58,241,62,241,70,241,71,241,78,241,84,241,85, +241,89,241,94,241,101,241,120,241,131,241,136,241,142,241,144,241,147,241,149,241,150,241,151,241,153,241,157,241,174,241,176, +241,177,241,179,241,187,241,201,241,206,241,216,241,217,241,218,241,219,241,222,241,230,241,236,241,246,241,247,241,249,241,250, +241,254,242,1,242,7,242,11,242,30,242,45,242,54,242,57,242,73,242,74,242,78,242,80,242,93,242,108,242,119,242,120, +242,122,242,123,242,131,242,139,242,140,242,141,242,142,242,145,242,146,242,149,242,154,242,156,242,158,242,164,242,168,242,182, +242,183,242,185,242,186,242,187,242,188,242,189,242,190,242,192,242,194,242,195,242,206,242,211,242,212,242,220,242,229,242,231, +242,234,242,237,242,242,242,246,242,249,242,254,243,5,243,12,243,28,243,30,243,40,243,50,243,56,243,91,243,93,243,96, +243,99,243,129,243,130,243,135,243,144,243,165,243,191,243,193,243,197,243,201,243,207,243,209,243,221,243,224,243,229,243,237, +243,251,243,253,243,255,244,6,244,16,244,34,244,36,244,37,244,52,244,54,244,58,244,60,244,63,244,65,244,67,244,69, +244,71,244,75,244,78,244,80,244,83,244,88,244,93,244,95,244,98,244,102,244,109,244,114,244,116,244,121,244,125,244,127, +244,130,244,135,244,139,244,142,244,148,244,151,244,158,244,161,244,173,244,179,244,186,244,190,244,194,244,196,244,198,244,206, +244,211,244,219,244,223,244,227,244,230,245,9,245,43,245,44,245,48,245,49,245,53,245,54,245,64,245,65,245,145,245,157, +245,162,245,167,245,177,245,180,245,184,245,189,245,197,245,203,245,206,245,210,245,215,245,218,245,220,245,223,245,225,245,228, +245,231,245,235,245,238,245,253,246,1,246,4,246,16,246,19,246,25,246,31,246,33,246,37,246,42,246,48,246,55,246,60, +246,65,246,68,246,71,246,74,246,79,246,81,246,85,246,88,246,94,246,98,246,102,246,107,246,109,246,111,246,116,246,118, +246,121,246,124,246,127,246,132,246,137,246,150,246,155,246,161,246,167,246,169,246,173,246,183,246,187,246,190,246,192,246,196, +246,200,246,207,246,209,246,211,246,213,246,215,246,217,246,222,246,227,246,230,246,232,246,237,246,242,246,250,246,252,247,0, +247,12,247,14,247,21,247,23,247,30,247,34,247,41,247,43,247,47,247,61,247,64,247,67,247,71,247,77,247,83,247,86, +247,91,247,95,247,105,247,108,247,112,247,115,247,125,247,129,247,132,247,136,247,140,247,148,247,150,247,156,247,160,247,162, +247,166,247,171,247,174,247,182,247,186,247,189,247,192,247,194,247,197,247,202,247,206,247,208,247,210,247,218,247,230,247,236, +247,239,247,243,247,245,247,247,247,251,248,2,248,7,248,10,248,11,248,12,248,13,248,16,248,18,248,22,248,24,248,29, +248,42,248,47,248,62,248,74,248,76,248,80,248,83,248,94,248,99,248,109,248,121,248,125,248,130,248,135,248,145,248,151, +248,193,248,204,248,215,248,217,248,229,248,239,248,255,255,255,0,0,0,33,0,35,0,42,0,48,0,60,0,97,0,98, +0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114, +0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,163,0,165,0,169,0,171,0,174,0,182,0,187,0,215, +0,247,32,19,32,28,32,29,32,57,32,58,32,164,32,168,32,169,32,170,32,172,32,180,32,184,32,189,33,34,33,144, +33,145,33,146,33,147,33,148,33,149,33,151,33,186,33,187,33,196,34,18,34,30,35,3,35,4,35,27,35,40,35,41, +35,42,35,43,35,153,35,207,35,233,35,234,35,237,35,238,35,241,35,243,35,248,35,249,35,251,35,254,36,189,37,160, +37,182,37,207,37,208,37,251,37,252,38,0,38,1,38,3,38,4,38,17,38,21,38,29,38,32,38,34,38,35,38,37, +38,42,38,44,38,46,38,47,38,56,38,57,38,63,38,64,38,66,38,90,38,91,38,92,38,93,38,94,38,95,38,101, +38,102,38,114,38,122,38,123,38,126,38,128,38,129,38,130,38,131,38,132,38,133,38,147,38,150,38,153,38,155,38,160, +38,161,38,162,38,163,38,164,38,165,38,166,38,167,38,168,38,169,38,170,38,171,38,178,38,189,38,190,38,196,38,197, +38,198,38,223,38,233,38,234,38,247,38,250,38,253,39,0,39,2,39,4,39,5,39,9,39,10,39,11,39,12,39,15, +39,17,39,18,39,19,39,20,39,21,39,22,39,29,39,33,39,49,39,68,39,70,39,76,39,78,39,83,39,84,39,85, +39,87,39,100,39,149,39,150,39,151,41,52,41,53,43,13,43,27,43,28,43,36,43,80,224,5,224,13,224,18,224,63, +224,89,224,133,224,151,224,154,224,169,224,172,224,180,224,183,224,187,224,207,224,216,224,223,224,227,225,49,225,57,225,64, +225,82,225,99,225,105,225,109,225,123,225,132,225,143,225,154,225,168,225,176,225,188,225,196,225,200,225,211,225,213,225,215, +225,237,225,243,225,246,225,254,226,9,226,33,226,45,226,61,226,137,226,156,226,183,226,187,226,197,226,202,226,205,226,235, +227,30,227,175,227,177,227,245,228,60,228,69,228,71,228,108,228,115,228,118,228,122,228,144,228,148,228,165,228,168,228,175, +228,179,228,181,228,206,228,224,228,232,228,237,228,238,228,239,229,7,229,39,229,50,229,81,229,90,229,113,229,118,229,137, +229,145,229,156,229,160,229,169,229,175,229,180,240,0,240,3,240,4,240,6,240,7,240,16,240,20,240,21,240,22,240,23, +240,26,240,27,240,28,240,29,240,30,240,33,240,64,240,65,240,69,240,70,240,71,240,80,240,92,240,93,240,94,240,96, +240,103,240,104,240,105,240,106,240,112,240,128,240,131,240,135,240,136,240,137,240,138,240,139,240,141,240,144,240,147,240,150, +240,151,240,152,240,156,240,160,240,162,240,163,240,176,240,192,240,208,240,214,240,224,240,226,240,228,240,229,240,230,240,231, +240,240,240,245,240,246,240,247,240,248,241,0,241,8,241,9,241,12,241,13,241,16,241,18,241,20,241,21,241,24,241,29, +241,30,241,32,241,35,241,36,241,40,241,41,241,42,241,43,241,48,241,55,241,61,241,64,241,71,241,72,241,80,241,85, +241,86,241,91,241,96,241,117,241,130,241,133,241,142,241,144,241,145,241,149,241,150,241,151,241,153,241,156,241,171,241,176, +241,177,241,178,241,184,241,192,241,205,241,216,241,217,241,218,241,219,241,220,241,224,241,234,241,246,241,247,241,248,241,250, +241,251,242,0,242,4,242,10,242,23,242,33,242,51,242,56,242,64,242,74,242,77,242,80,242,81,242,108,242,113,242,120, +242,121,242,123,242,131,242,139,242,140,242,141,242,142,242,144,242,146,242,149,242,154,242,156,242,157,242,160,242,167,242,180, +242,183,242,185,242,186,242,187,242,188,242,189,242,190,242,192,242,193,242,195,242,199,242,208,242,212,242,219,242,229,242,231, +242,234,242,237,242,241,242,245,242,249,242,254,243,2,243,9,243,28,243,30,243,40,243,50,243,55,243,88,243,93,243,96, +243,98,243,129,243,130,243,134,243,144,243,165,243,190,243,193,243,197,243,201,243,205,243,209,243,221,243,224,243,229,243,237, +243,250,243,253,243,255,244,6,244,16,244,34,244,36,244,37,244,50,244,54,244,57,244,60,244,63,244,65,244,67,244,69, +244,71,244,75,244,78,244,80,244,83,244,88,244,92,244,95,244,97,244,102,244,104,244,112,244,116,244,119,244,125,244,126, +244,129,244,132,244,139,244,141,244,144,244,150,244,158,244,161,244,173,244,179,244,184,244,189,244,192,244,196,244,198,244,205, +244,211,244,214,244,222,244,226,244,230,244,250,245,21,245,44,245,45,245,49,245,50,245,54,245,55,245,65,245,66,245,147, +245,159,245,164,245,170,245,179,245,182,245,186,245,191,245,199,245,205,245,208,245,215,245,218,245,220,245,222,245,225,245,228, +245,231,245,235,245,238,245,252,246,1,246,4,246,16,246,19,246,25,246,31,246,33,246,36,246,41,246,46,246,55,246,59, +246,65,246,68,246,71,246,74,246,79,246,81,246,83,246,88,246,93,246,98,246,100,246,105,246,109,246,111,246,116,246,118, +246,120,246,123,246,127,246,129,246,135,246,150,246,152,246,160,246,167,246,169,246,173,246,182,246,187,246,190,246,192,246,195, +246,200,246,207,246,209,246,211,246,213,246,215,246,217,246,221,246,226,246,230,246,232,246,236,246,240,246,250,246,252,246,255, +247,11,247,14,247,20,247,23,247,30,247,34,247,40,247,43,247,46,247,59,247,64,247,67,247,71,247,77,247,81,247,86, +247,90,247,94,247,105,247,107,247,111,247,114,247,124,247,128,247,131,247,134,247,140,247,147,247,150,247,156,247,159,247,162, +247,164,247,169,247,173,247,181,247,185,247,189,247,191,247,194,247,196,247,201,247,204,247,208,247,210,247,215,247,228,247,236, +247,239,247,242,247,245,247,247,247,250,248,2,248,5,248,10,248,11,248,12,248,13,248,15,248,18,248,21,248,24,248,29, +248,39,248,47,248,62,248,74,248,76,248,80,248,83,248,94,248,99,248,109,248,121,248,123,248,129,248,132,248,145,248,151, +248,192,248,204,248,215,248,217,248,229,248,239,248,255,255,255,255,224,255,223,255,219,255,215,255,213,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,43,32,37,32,33,31,245,31,222, +31,208,31,192,31,191,31,177,31,175,31,168,31,166,31,163,0,0,31,135,31,129,31,126,31,50,31,43,31,40,31,23, +31,7,31,2,30,255,30,242,30,234,30,225,30,215,30,203,30,196,30,185,30,178,30,175,30,165,30,164,30,163,30,142, +30,137,30,135,30,128,30,118,30,95,30,85,30,70,29,251,29,233,29,207,29,204,29,195,29,191,29,189,29,161,29,111, +28,223,28,222,28,156,28,86,28,78,28,77,28,42,28,36,28,34,28,32,28,12,28,9,27,249,27,247,27,246,27,244, +27,243,27,242,27,241,27,240,27,239,0,0,27,238,27,235,27,234,27,232,27,231,27,230,27,229,27,228,27,227,27,226, +27,225,27,223,27,216,27,212,27,208,17,133,0,0,17,132,0,0,17,131,17,130,0,0,17,129,0,0,17,128,0,0, +0,0,17,126,0,0,17,125,17,123,0,0,17,121,0,0,0,0,17,119,17,118,0,0,0,0,17,116,17,115,0,0, +17,114,0,0,17,113,17,112,17,111,17,109,0,0,0,0,17,107,0,0,17,106,17,105,17,104,17,103,0,0,0,0, +17,101,17,98,17,97,0,0,17,96,17,95,17,82,17,81,17,77,17,76,17,75,0,0,0,0,0,0,17,72,17,71, +0,0,0,0,0,0,17,68,17,67,0,0,17,66,0,0,17,65,17,64,0,0,0,0,0,0,17,58,0,0,17,57, +17,56,0,0,17,55,0,0,17,54,0,0,17,53,17,52,17,51,17,49,17,48,0,0,17,47,17,46,0,0,17,45, +17,44,17,43,17,28,17,19,17,18,0,0,0,0,17,10,17,9,0,0,17,8,17,7,17,5,16,248,16,247,0,0, +16,246,16,242,16,238,16,235,16,226,0,0,16,225,0,0,16,224,16,223,16,220,16,211,0,0,16,210,0,0,16,209, +16,208,16,206,16,204,16,193,16,191,16,186,16,185,16,179,0,0,16,176,0,0,16,174,16,160,16,156,0,0,16,155, +0,0,0,0,16,139,0,0,16,138,0,0,16,136,0,0,0,0,16,128,0,0,16,126,16,125,16,123,16,112,0,0, +16,110,0,0,16,109,0,0,16,108,0,0,0,0,16,105,0,0,16,101,16,100,0,0,16,93,16,85,16,84,16,82, +16,80,16,77,16,75,16,73,16,69,16,66,16,63,16,48,16,47,16,38,0,0,16,24,15,249,15,248,15,246,15,245, +0,0,0,0,15,211,15,203,15,183,15,159,15,158,15,155,15,152,15,149,15,148,15,137,15,135,15,131,15,124,15,112, +0,0,15,109,15,103,15,94,15,77,15,76,0,0,15,63,15,62,15,60,15,59,15,57,15,56,15,55,15,54,15,53, +15,50,15,48,15,47,15,45,15,41,15,38,15,37,15,36,15,33,15,32,15,30,15,29,15,27,0,0,15,23,15,22, +15,21,15,18,15,17,15,16,15,15,15,9,0,0,14,251,14,246,14,242,14,240,14,239,14,238,14,237,14,231,14,227, +14,225,14,223,14,221,0,0,14,199,14,188,0,0,14,187,0,0,14,186,0,0,14,185,0,0,14,184,14,183,14,182, +14,181,14,179,14,178,14,177,14,176,14,175,14,174,14,173,14,172,14,168,14,166,14,165,14,164,14,163,14,161,14,159, +14,156,14,154,14,141,14,138,14,136,14,125,14,123,14,118,14,113,14,112,14,110,14,107,14,104,14,98,14,95,14,91, +14,89,14,87,14,85,14,81,14,80,14,79,14,77,14,73,14,70,14,69,14,67,14,66,14,65,14,61,14,60,14,59, +14,58,14,56,14,55,14,53,14,41,14,40,14,36,14,31,14,30,14,27,14,19,14,16,14,14,14,13,14,11,14,8, +14,2,14,1,14,0,13,255,13,254,13,253,13,250,13,247,13,245,13,244,13,241,13,239,13,232,13,231,13,229,13,219, +13,218,13,213,13,212,13,206,13,203,13,198,13,197,13,195,13,184,13,182,13,180,13,177,13,172,13,169,13,167,13,164, +13,162,13,153,13,152,13,150,13,149,13,141,13,139,13,138,13,137,13,134,13,128,13,127,13,122,13,120,13,119,13,118, +13,116,13,115,13,109,13,107,13,105,13,104,13,103,13,102,13,99,13,98,13,97,13,96,13,92,13,83,13,78,13,76, +13,74,13,73,13,72,13,70,13,64,13,62,0,0,0,0,0,0,13,57,13,56,13,55,13,53,13,52,13,48,13,39, +13,35,13,21,13,10,13,9,13,6,13,4,12,250,12,246,12,237,12,226,12,225,12,222,12,221,12,212,12,207,12,167, +12,157,12,147,12,146,0,0,12,125,12,110,0,1,0,0,0,0,0,0,0,0,0,0,5,170,5,170,5,170,5,170, +5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170,5,170, +5,170,5,170,5,170,5,170,5,170,5,170,6,58,6,60,6,90,6,18,6,130,6,78,6,14,5,168,6,218,5,218, +6,16,6,16,6,4,6,4,6,52,6,30,6,34,6,62,6,20,6,238,6,254,6,22,6,92,5,182,5,184,5,180, +5,182,6,120,6,120,6,128,5,204,5,128,5,204,5,170,6,170,5,218,5,218,6,54,5,224,5,140,5,140,6,158, +5,112,5,130,5,124,5,114,5,122,5,108,6,74,6,32,5,108,5,108,5,80,5,228,6,108,5,148,5,94,5,182, +5,84,5,140,5,138,5,210,5,130,6,166,6,154,5,178,6,154,5,118,6,142,6,150,6,144,6,110,6,118,6,112, +6,112,6,118,6,104,5,144,5,204,5,198,5,198,6,40,6,44,6,44,6,32,6,34,6,34,5,0,5,178,5,162, +5,160,5,158,6,54,6,40,6,44,6,40,6,32,6,28,6,32,5,104,5,182,4,240,6,42,5,32,5,58,5,156, +5,156,5,156,5,146,5,154,5,144,5,152,5,152,5,70,5,68,5,148,5,114,5,220,6,56,6,34,6,40,5,18, +6,22,5,230,6,42,6,20,5,240,5,2,5,0,4,254,5,48,5,0,6,10,5,122,5,122,5,158,5,228,5,224, +4,160,4,158,4,158,4,156,5,226,5,234,4,72,5,128,5,126,4,144,5,120,4,72,4,70,4,50,4,48,4,124, +4,54,4,182,5,178,5,134,5,130,5,114,5,148,5,146,4,228,4,106,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,3,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,8,0,0,3,174,0,0,0,0,4,160,0,0,4,56,0,0,4,162,4,166, +0,0,4,26,0,0,0,0,4,144,0,0,4,22,4,18,0,0,0,0,3,182,3,182,0,0,0,0,3,58,0,0, +3,52,0,0,0,0,0,0,0,0,4,10,4,10,0,0,3,106,0,0,0,0,0,0,0,0,3,180,3,114,0,0, +0,0,0,0,3,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,146,3,134,3,138,0,0,0,0,4,52, +3,210,3,220,0,0,0,0,4,64,0,0,3,168,0,0,0,0,4,60,3,106,3,106,0,0,3,50,0,0,0,0, +3,100,0,0,2,218,0,0,2,196,0,0,0,0,0,0,0,0,0,0,3,138,0,0,0,0,2,182,0,0,0,0, +0,0,0,0,0,0,0,0,3,250,3,246,0,0,0,0,3,82,0,0,0,0,0,0,0,0,0,0,3,212,0,0, +0,0,0,0,0,0,0,0,3,122,0,0,3,72,0,0,0,0,0,0,0,0,3,114,0,0,2,134,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,122,0,0,3,124,0,0,0,0,0,0,3,128,0,0,3,200, +2,230,0,0,3,120,0,0,3,118,0,0,2,66,2,68,0,0,2,188,0,0,0,0,0,0,0,0,3,102,0,0, +3,100,0,0,3,98,0,0,3,96,2,116,0,0,3,92,0,0,0,0,3,124,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,96,0,0,0,0,0,0,0,0,0,0,2,156, +2,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,102, +0,0,0,0,0,0,0,0,0,0,2,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,72,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2,156,0,0,0,0,1,112,0,0,1,110,0,0,1,102,0,0,1,92,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,158,0,138,0,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,52,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,17,0,18,0,19,0,20, +0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36, +0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,142,0,157,1,136,1,137,1,138, +1,143,1,144,1,147,1,149,1,150,1,155,1,159,1,169,1,170,1,171,1,187,1,192,1,193,1,194,1,195,1,196, +1,197,1,198,1,200,1,201,1,202,1,205,1,206,1,207,1,211,1,212,1,213,1,214,1,218,1,225,1,229,1,235, +1,236,1,243,1,244,1,255,2,6,2,20,2,22,2,26,2,34,2,44,2,45,2,47,2,52,2,53,2,54,2,58, +2,60,2,66,2,67,2,68,2,71,2,72,2,73,2,74,2,78,2,79,2,81,2,83,2,86,2,110,2,116,2,118, +2,121,2,124,2,129,2,130,2,131,2,132,2,133,2,134,2,135,2,136,2,143,2,144,2,151,2,152,2,158,2,165, +2,170,2,186,2,189,2,194,2,201,2,203,2,215,2,218,2,224,2,225,2,226,2,227,2,228,2,229,2,230,2,231, +2,232,2,233,2,234,2,235,2,252,2,254,3,1,3,2,3,4,3,9,3,10,3,11,3,12,3,20,3,22,3,23, +3,36,3,38,3,39,3,40,3,41,3,43,3,55,3,57,3,58,3,59,3,61,3,63,3,69,3,79,3,80,3,81, +3,82,3,83,3,84,3,86,3,91,3,93,3,94,3,104,3,110,3,114,3,118,3,120,3,121,3,122,3,123,3,124, +3,130,3,136,3,149,3,168,3,217,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,234,3,238,4,18,4,95, +4,96,4,126,4,147,4,149,4,157,4,163,4,164,4,175,4,182,4,193,4,194,4,197,4,200,4,203,4,207,4,216, +4,225,4,233,4,245,4,252,5,11,5,35,5,37,5,44,5,49,5,51,5,54,0,12,0,0,0,0,47,248,0,0, +0,0,0,0,3,254,0,0,0,33,0,0,0,33,0,0,0,1,0,0,0,35,0,0,0,37,0,0,0,2,0,0, +0,42,0,0,0,43,0,0,0,5,0,0,0,48,0,0,0,57,0,0,0,7,0,0,0,60,0,0,0,90,0,0, +0,17,0,0,0,97,0,0,0,97,0,0,0,22,0,0,0,98,0,0,0,98,0,0,0,23,0,0,0,99,0,0, +0,99,0,0,0,24,0,0,0,100,0,0,0,100,0,0,0,25,0,0,0,101,0,0,0,101,0,0,0,26,0,0, +0,102,0,0,0,102,0,0,0,27,0,0,0,103,0,0,0,103,0,0,0,28,0,0,0,104,0,0,0,104,0,0, +0,29,0,0,0,105,0,0,0,105,0,0,0,30,0,0,0,106,0,0,0,106,0,0,0,31,0,0,0,107,0,0, +0,107,0,0,0,32,0,0,0,108,0,0,0,108,0,0,0,33,0,0,0,109,0,0,0,109,0,0,0,34,0,0, +0,110,0,0,0,110,0,0,0,35,0,0,0,111,0,0,0,111,0,0,0,36,0,0,0,112,0,0,0,112,0,0, +0,37,0,0,0,113,0,0,0,113,0,0,0,38,0,0,0,114,0,0,0,114,0,0,0,39,0,0,0,115,0,0, +0,115,0,0,0,40,0,0,0,116,0,0,0,116,0,0,0,41,0,0,0,117,0,0,0,117,0,0,0,42,0,0, +0,118,0,0,0,118,0,0,0,43,0,0,0,119,0,0,0,119,0,0,0,44,0,0,0,120,0,0,0,120,0,0, +0,45,0,0,0,121,0,0,0,121,0,0,0,46,0,0,0,122,0,0,0,122,0,0,0,47,0,0,0,163,0,0, +0,163,0,0,2,130,0,0,0,165,0,0,0,165,0,0,2,132,0,0,0,169,0,0,0,169,0,0,2,203,0,0, +0,171,0,0,0,171,0,0,2,67,0,0,0,174,0,0,0,174,0,0,3,11,0,0,0,182,0,0,0,182,0,0, +2,189,0,0,0,187,0,0,0,187,0,0,2,68,0,0,0,215,0,0,0,215,0,0,1,144,0,0,0,247,0,0, +0,247,0,0,3,229,0,0,32,19,0,0,32,19,0,0,1,218,0,0,32,28,0,0,32,28,0,0,2,78,0,0, +32,29,0,0,32,29,0,0,2,79,0,0,32,57,0,0,32,57,0,0,2,71,0,0,32,58,0,0,32,58,0,0, +2,72,0,0,32,164,0,0,32,164,0,0,2,158,0,0,32,168,0,0,32,168,0,0,2,131,0,0,32,169,0,0, +32,169,0,0,2,134,0,0,32,170,0,0,32,170,0,0,2,215,0,0,32,172,0,0,32,172,0,0,2,129,0,0, +32,180,0,0,32,180,0,0,4,225,0,0,32,184,0,0,32,184,0,0,5,51,0,0,32,189,0,0,32,189,0,0, +2,133,0,0,33,34,0,0,33,34,0,0,3,10,0,0,33,144,0,0,33,144,0,0,1,211,0,0,33,145,0,0, +33,145,0,0,1,213,0,0,33,146,0,0,33,146,0,0,1,212,0,0,33,147,0,0,33,147,0,0,1,214,0,0, +33,148,0,0,33,148,0,0,3,79,0,0,33,149,0,0,33,149,0,0,3,80,0,0,33,151,0,0,33,151,0,0, +3,86,0,0,33,186,0,0,33,186,0,0,2,45,0,0,33,187,0,0,33,187,0,0,1,155,0,0,33,196,0,0, +33,196,0,0,2,52,0,0,34,18,0,0,34,18,0,0,1,218,0,0,34,30,0,0,34,30,0,0,3,238,0,0, +35,3,0,0,35,3,0,0,2,73,0,0,35,4,0,0,35,4,0,0,2,74,0,0,35,27,0,0,35,27,0,0, +3,1,0,0,35,40,0,0,35,40,0,0,2,86,0,0,35,41,0,0,35,41,0,0,1,201,0,0,35,42,0,0, +35,42,0,0,1,202,0,0,35,43,0,0,35,43,0,0,4,18,0,0,35,153,0,0,35,153,0,0,1,170,0,0, +35,207,0,0,35,207,0,0,1,200,0,0,35,233,0,0,35,233,0,0,1,197,0,0,35,234,0,0,35,234,0,0, +1,193,0,0,35,237,0,0,35,237,0,0,1,198,0,0,35,238,0,0,35,238,0,0,1,192,0,0,35,241,0,0, +35,241,0,0,3,63,0,0,35,243,0,0,35,243,0,0,3,2,0,0,35,248,0,0,35,248,0,0,1,195,0,0, +35,249,0,0,35,249,0,0,1,196,0,0,35,251,0,0,35,251,0,0,1,147,0,0,35,254,0,0,35,254,0,0, +2,152,0,0,36,189,0,0,36,189,0,0,3,149,0,0,37,160,0,0,37,160,0,0,2,26,0,0,37,182,0,0, +37,182,0,0,1,194,0,0,37,207,0,0,37,207,0,0,2,81,0,0,37,208,0,0,37,208,0,0,1,187,0,0, +37,251,0,0,37,251,0,0,2,26,0,0,37,252,0,0,37,252,0,0,2,26,0,0,38,0,0,0,38,0,0,0, +2,151,0,0,38,1,0,0,38,1,0,0,2,20,0,0,38,3,0,0,38,3,0,0,5,49,0,0,38,4,0,0, +38,4,0,0,4,252,0,0,38,17,0,0,38,17,0,0,2,121,0,0,38,21,0,0,38,21,0,0,5,35,0,0, +38,29,0,0,38,29,0,0,2,6,0,0,38,32,0,0,38,32,0,0,4,233,0,0,38,34,0,0,38,34,0,0, +5,37,0,0,38,35,0,0,38,35,0,0,5,11,0,0,38,37,0,0,38,37,0,0,4,157,0,0,38,42,0,0, +38,42,0,0,4,193,0,0,38,44,0,0,38,44,0,0,4,175,0,0,38,46,0,0,38,46,0,0,4,182,0,0, +38,47,0,0,38,47,0,0,4,200,0,0,38,56,0,0,38,56,0,0,4,164,0,0,38,57,0,0,38,57,0,0, +2,83,0,0,38,63,0,0,38,63,0,0,2,226,0,0,38,64,0,0,38,64,0,0,2,224,0,0,38,66,0,0, +38,66,0,0,2,225,0,0,38,90,0,0,38,90,0,0,3,120,0,0,38,91,0,0,38,91,0,0,3,123,0,0, +38,92,0,0,38,92,0,0,3,124,0,0,38,93,0,0,38,93,0,0,3,118,0,0,38,94,0,0,38,94,0,0, +3,121,0,0,38,95,0,0,38,95,0,0,3,122,0,0,38,101,0,0,38,101,0,0,1,136,0,0,38,102,0,0, +38,102,0,0,2,218,0,0,38,114,0,0,38,114,0,0,2,170,0,0,38,122,0,0,38,122,0,0,2,170,0,0, +38,123,0,0,38,123,0,0,2,170,0,0,38,126,0,0,38,126,0,0,3,238,0,0,38,128,0,0,38,128,0,0, +3,225,0,0,38,129,0,0,38,129,0,0,3,228,0,0,38,130,0,0,38,130,0,0,3,227,0,0,38,131,0,0, +38,131,0,0,3,224,0,0,38,132,0,0,38,132,0,0,3,223,0,0,38,133,0,0,38,133,0,0,3,226,0,0, +38,147,0,0,38,147,0,0,2,110,0,0,38,150,0,0,38,150,0,0,2,254,0,0,38,153,0,0,38,153,0,0, +1,149,0,0,38,155,0,0,38,155,0,0,4,126,0,0,38,160,0,0,38,160,0,0,1,225,0,0,38,161,0,0, +38,161,0,0,2,47,0,0,38,162,0,0,38,162,0,0,2,229,0,0,38,163,0,0,38,163,0,0,2,230,0,0, +38,164,0,0,38,164,0,0,2,231,0,0,38,165,0,0,38,165,0,0,2,227,0,0,38,166,0,0,38,166,0,0, +2,232,0,0,38,167,0,0,38,167,0,0,2,228,0,0,38,168,0,0,38,168,0,0,2,233,0,0,38,169,0,0, +38,169,0,0,2,234,0,0,38,170,0,0,38,170,0,0,2,81,0,0,38,171,0,0,38,171,0,0,2,81,0,0, +38,178,0,0,38,178,0,0,2,235,0,0,38,189,0,0,38,189,0,0,2,194,0,0,38,190,0,0,38,190,0,0, +3,114,0,0,38,196,0,0,38,196,0,0,5,49,0,0,38,197,0,0,38,197,0,0,4,207,0,0,38,198,0,0, +38,198,0,0,4,245,0,0,38,223,0,0,38,223,0,0,2,34,0,0,38,233,0,0,38,233,0,0,4,197,0,0, +38,234,0,0,38,234,0,0,3,217,0,0,38,247,0,0,38,247,0,0,5,44,0,0,38,250,0,0,38,250,0,0, +4,203,0,0,38,253,0,0,38,253,0,0,3,234,0,0,39,0,0,0,39,0,0,0,2,22,0,0,39,2,0,0, +39,2,0,0,2,22,0,0,39,4,0,0,39,4,0,0,2,22,0,0,39,5,0,0,39,5,0,0,2,121,0,0, +39,9,0,0,39,9,0,0,2,44,0,0,39,10,0,0,39,10,0,0,4,216,0,0,39,11,0,0,39,11,0,0, +3,4,0,0,39,12,0,0,39,12,0,0,3,9,0,0,39,15,0,0,39,15,0,0,3,69,0,0,39,17,0,0, +39,17,0,0,4,96,0,0,39,18,0,0,39,18,0,0,4,95,0,0,39,19,0,0,39,19,0,0,1,143,0,0, +39,20,0,0,39,20,0,0,1,143,0,0,39,21,0,0,39,21,0,0,1,144,0,0,39,22,0,0,39,22,0,0, +1,144,0,0,39,29,0,0,39,29,0,0,4,163,0,0,39,33,0,0,39,33,0,0,4,194,0,0,39,49,0,0, +39,49,0,0,0,5,0,0,39,68,0,0,39,68,0,0,3,57,0,0,39,70,0,0,39,70,0,0,3,57,0,0, +39,76,0,0,39,76,0,0,1,144,0,0,39,78,0,0,39,78,0,0,3,55,0,0,39,83,0,0,39,83,0,0, +0,20,0,0,39,84,0,0,39,84,0,0,0,20,0,0,39,85,0,0,39,85,0,0,0,1,0,0,39,87,0,0, +39,87,0,0,0,1,0,0,39,100,0,0,39,100,0,0,1,136,0,0,39,149,0,0,39,149,0,0,0,6,0,0, +39,150,0,0,39,150,0,0,1,218,0,0,39,151,0,0,39,151,0,0,3,229,0,0,41,52,0,0,41,52,0,0, +3,94,0,0,41,53,0,0,41,53,0,0,3,93,0,0,43,13,0,0,43,13,0,0,3,80,0,0,43,27,0,0, +43,27,0,0,3,130,0,0,43,28,0,0,43,28,0,0,3,130,0,0,43,36,0,0,43,36,0,0,2,81,0,0, +43,80,0,0,43,80,0,0,1,137,0,0,224,5,0,0,224,6,0,0,0,48,0,0,224,13,0,0,224,13,0,0, +0,50,0,0,224,18,0,0,224,18,0,0,0,51,0,0,224,63,0,0,224,65,0,0,0,52,0,0,224,89,0,0, +224,118,0,0,0,55,0,0,224,133,0,0,224,134,0,0,0,85,0,0,224,151,0,0,224,152,0,0,0,87,0,0, +224,154,0,0,224,154,0,0,0,89,0,0,224,169,0,0,224,169,0,0,0,90,0,0,224,172,0,0,224,172,0,0, +0,91,0,0,224,180,0,0,224,180,0,0,0,92,0,0,224,183,0,0,224,183,0,0,0,93,0,0,224,187,0,0, +224,187,0,0,0,94,0,0,224,207,0,0,224,207,0,0,5,54,0,0,224,216,0,0,224,216,0,0,0,95,0,0, +224,223,0,0,224,223,0,0,0,96,0,0,224,227,0,0,224,228,0,0,0,97,0,0,225,49,0,0,225,49,0,0, +0,99,0,0,225,57,0,0,225,60,0,0,0,100,0,0,225,64,0,0,225,64,0,0,0,104,0,0,225,82,0,0, +225,82,0,0,0,105,0,0,225,99,0,0,225,99,0,0,0,106,0,0,225,105,0,0,225,105,0,0,0,107,0,0, +225,109,0,0,225,109,0,0,0,108,0,0,225,123,0,0,225,123,0,0,0,109,0,0,225,132,0,0,225,133,0,0, +0,110,0,0,225,143,0,0,225,143,0,0,0,112,0,0,225,154,0,0,225,155,0,0,0,113,0,0,225,168,0,0, +225,168,0,0,0,115,0,0,225,176,0,0,225,176,0,0,0,116,0,0,225,188,0,0,225,188,0,0,0,117,0,0, +225,196,0,0,225,196,0,0,0,118,0,0,225,200,0,0,225,200,0,0,0,119,0,0,225,211,0,0,225,211,0,0, +0,120,0,0,225,213,0,0,225,213,0,0,0,121,0,0,225,215,0,0,225,215,0,0,0,122,0,0,225,237,0,0, +225,237,0,0,0,123,0,0,225,243,0,0,225,243,0,0,0,124,0,0,225,246,0,0,225,246,0,0,0,125,0,0, +225,254,0,0,225,254,0,0,0,126,0,0,226,9,0,0,226,9,0,0,0,127,0,0,226,33,0,0,226,34,0,0, +0,128,0,0,226,45,0,0,226,45,0,0,0,130,0,0,226,61,0,0,226,61,0,0,0,131,0,0,226,137,0,0, +226,137,0,0,0,132,0,0,226,156,0,0,226,156,0,0,0,133,0,0,226,183,0,0,226,183,0,0,0,134,0,0, +226,187,0,0,226,187,0,0,0,135,0,0,226,197,0,0,226,197,0,0,0,136,0,0,226,202,0,0,226,202,0,0, +0,137,0,0,226,205,0,0,226,206,0,0,0,138,0,0,226,235,0,0,226,235,0,0,0,140,0,0,227,30,0,0, +227,30,0,0,0,141,0,0,227,175,0,0,227,175,0,0,0,142,0,0,227,177,0,0,227,178,0,0,0,143,0,0, +227,245,0,0,227,245,0,0,0,145,0,0,228,60,0,0,228,60,0,0,0,146,0,0,228,69,0,0,228,69,0,0, +0,147,0,0,228,71,0,0,228,72,0,0,0,148,0,0,228,108,0,0,228,108,0,0,0,150,0,0,228,115,0,0, +228,115,0,0,0,151,0,0,228,118,0,0,228,119,0,0,0,152,0,0,228,122,0,0,228,123,0,0,0,154,0,0, +228,144,0,0,228,144,0,0,0,156,0,0,228,148,0,0,228,148,0,0,0,157,0,0,228,165,0,0,228,165,0,0, +0,158,0,0,228,168,0,0,228,173,0,0,0,159,0,0,228,175,0,0,228,176,0,0,0,165,0,0,228,179,0,0, +228,179,0,0,0,167,0,0,228,181,0,0,228,204,0,0,0,168,0,0,228,206,0,0,228,222,0,0,0,192,0,0, +228,224,0,0,228,230,0,0,0,209,0,0,228,232,0,0,228,235,0,0,0,216,0,0,228,237,0,0,228,237,0,0, +0,220,0,0,228,238,0,0,228,238,0,0,0,157,0,0,228,239,0,0,229,3,0,0,0,221,0,0,229,7,0,0, +229,37,0,0,0,242,0,0,229,39,0,0,229,47,0,0,1,17,0,0,229,50,0,0,229,79,0,0,1,26,0,0, +229,81,0,0,229,88,0,0,1,56,0,0,229,90,0,0,229,111,0,0,1,64,0,0,229,113,0,0,229,116,0,0, +1,86,0,0,229,118,0,0,229,135,0,0,1,90,0,0,229,137,0,0,229,143,0,0,1,108,0,0,229,145,0,0, +229,154,0,0,1,115,0,0,229,156,0,0,229,157,0,0,1,125,0,0,229,160,0,0,229,161,0,0,1,127,0,0, +229,169,0,0,229,170,0,0,1,129,0,0,229,175,0,0,229,175,0,0,1,131,0,0,229,180,0,0,229,180,0,0, +1,132,0,0,240,0,0,0,240,2,0,0,1,133,0,0,240,3,0,0,240,3,0,0,2,44,0,0,240,4,0,0, +240,5,0,0,1,136,0,0,240,6,0,0,240,6,0,0,1,137,0,0,240,7,0,0,240,14,0,0,1,138,0,0, +240,16,0,0,240,19,0,0,1,146,0,0,240,20,0,0,240,20,0,0,3,61,0,0,240,21,0,0,240,21,0,0, +1,150,0,0,240,22,0,0,240,22,0,0,2,135,0,0,240,23,0,0,240,25,0,0,1,151,0,0,240,26,0,0, +240,26,0,0,3,81,0,0,240,27,0,0,240,27,0,0,3,84,0,0,240,28,0,0,240,28,0,0,1,154,0,0, +240,29,0,0,240,29,0,0,2,116,0,0,240,30,0,0,240,30,0,0,1,155,0,0,240,33,0,0,240,62,0,0, +1,156,0,0,240,64,0,0,240,64,0,0,3,69,0,0,240,65,0,0,240,68,0,0,1,186,0,0,240,69,0,0, +240,69,0,0,2,124,0,0,240,70,0,0,240,70,0,0,2,121,0,0,240,71,0,0,240,78,0,0,1,190,0,0, +240,80,0,0,240,91,0,0,1,198,0,0,240,92,0,0,240,92,0,0,1,205,0,0,240,93,0,0,240,93,0,0, +1,206,0,0,240,94,0,0,240,94,0,0,1,210,0,0,240,96,0,0,240,102,0,0,1,211,0,0,240,103,0,0, +240,103,0,0,0,6,0,0,240,104,0,0,240,104,0,0,1,218,0,0,240,105,0,0,240,105,0,0,0,5,0,0, +240,106,0,0,240,110,0,0,1,219,0,0,240,112,0,0,240,126,0,0,1,224,0,0,240,128,0,0,240,128,0,0, +1,239,0,0,240,131,0,0,240,134,0,0,1,240,0,0,240,135,0,0,240,135,0,0,2,143,0,0,240,136,0,0, +240,136,0,0,2,144,0,0,240,137,0,0,240,137,0,0,1,244,0,0,240,138,0,0,240,138,0,0,1,136,0,0, +240,139,0,0,240,139,0,0,1,245,0,0,240,141,0,0,240,142,0,0,1,246,0,0,240,144,0,0,240,145,0,0, +1,248,0,0,240,147,0,0,240,149,0,0,1,250,0,0,240,150,0,0,240,150,0,0,2,26,0,0,240,151,0,0, +240,151,0,0,1,169,0,0,240,152,0,0,240,152,0,0,1,253,0,0,240,156,0,0,240,158,0,0,1,254,0,0, +240,160,0,0,240,161,0,0,2,1,0,0,240,162,0,0,240,162,0,0,2,58,0,0,240,163,0,0,240,174,0,0, +2,3,0,0,240,176,0,0,240,178,0,0,2,15,0,0,240,192,0,0,240,206,0,0,2,18,0,0,240,208,0,0, +240,209,0,0,2,33,0,0,240,214,0,0,240,222,0,0,2,35,0,0,240,224,0,0,240,224,0,0,2,44,0,0, +240,226,0,0,240,227,0,0,2,45,0,0,240,228,0,0,240,228,0,0,4,149,0,0,240,229,0,0,240,229,0,0, +1,229,0,0,240,230,0,0,240,230,0,0,1,243,0,0,240,231,0,0,240,238,0,0,2,47,0,0,240,240,0,0, +240,244,0,0,2,55,0,0,240,245,0,0,240,245,0,0,3,59,0,0,240,246,0,0,240,246,0,0,2,136,0,0, +240,247,0,0,240,247,0,0,2,165,0,0,240,248,0,0,240,254,0,0,2,60,0,0,241,0,0,0,241,7,0,0, +2,67,0,0,241,8,0,0,241,8,0,0,3,91,0,0,241,9,0,0,241,11,0,0,2,75,0,0,241,12,0,0, +241,12,0,0,2,81,0,0,241,13,0,0,241,14,0,0,2,78,0,0,241,16,0,0,241,17,0,0,2,80,0,0, +241,18,0,0,241,18,0,0,3,104,0,0,241,20,0,0,241,20,0,0,1,235,0,0,241,21,0,0,241,21,0,0, +1,236,0,0,241,24,0,0,241,28,0,0,2,82,0,0,241,29,0,0,241,29,0,0,1,159,0,0,241,30,0,0, +241,30,0,0,2,87,0,0,241,32,0,0,241,34,0,0,2,88,0,0,241,35,0,0,241,35,0,0,1,244,0,0, +241,36,0,0,241,39,0,0,2,91,0,0,241,40,0,0,241,40,0,0,0,20,0,0,241,41,0,0,241,41,0,0, +2,95,0,0,241,42,0,0,241,42,0,0,0,1,0,0,241,43,0,0,241,46,0,0,2,96,0,0,241,48,0,0, +241,53,0,0,2,100,0,0,241,55,0,0,241,58,0,0,2,106,0,0,241,61,0,0,241,62,0,0,2,110,0,0, +241,64,0,0,241,70,0,0,2,112,0,0,241,71,0,0,241,71,0,0,2,118,0,0,241,72,0,0,241,78,0,0, +2,119,0,0,241,80,0,0,241,84,0,0,2,126,0,0,241,85,0,0,241,85,0,0,0,3,0,0,241,86,0,0, +241,89,0,0,2,131,0,0,241,91,0,0,241,94,0,0,2,135,0,0,241,96,0,0,241,101,0,0,2,139,0,0, +241,117,0,0,241,120,0,0,2,145,0,0,241,130,0,0,241,131,0,0,2,149,0,0,241,133,0,0,241,136,0,0, +2,151,0,0,241,142,0,0,241,142,0,0,3,83,0,0,241,144,0,0,241,144,0,0,3,82,0,0,241,145,0,0, +241,147,0,0,2,155,0,0,241,149,0,0,241,149,0,0,2,158,0,0,241,150,0,0,241,150,0,0,2,66,0,0, +241,151,0,0,241,151,0,0,2,159,0,0,241,153,0,0,241,153,0,0,2,160,0,0,241,156,0,0,241,157,0,0, +2,161,0,0,241,171,0,0,241,174,0,0,2,163,0,0,241,176,0,0,241,176,0,0,2,167,0,0,241,177,0,0, +241,177,0,0,3,58,0,0,241,178,0,0,241,179,0,0,2,168,0,0,241,184,0,0,241,187,0,0,2,170,0,0, +241,192,0,0,241,201,0,0,2,174,0,0,241,205,0,0,241,206,0,0,2,184,0,0,241,216,0,0,241,216,0,0, +2,186,0,0,241,217,0,0,241,217,0,0,2,186,0,0,241,218,0,0,241,218,0,0,2,187,0,0,241,219,0,0, +241,219,0,0,2,81,0,0,241,220,0,0,241,222,0,0,2,188,0,0,241,224,0,0,241,230,0,0,2,191,0,0, +241,234,0,0,241,236,0,0,2,198,0,0,241,246,0,0,241,246,0,0,2,201,0,0,241,247,0,0,241,247,0,0, +2,201,0,0,241,248,0,0,241,249,0,0,2,202,0,0,241,250,0,0,241,250,0,0,0,21,0,0,241,251,0,0, +241,254,0,0,2,204,0,0,242,0,0,0,242,1,0,0,2,208,0,0,242,4,0,0,242,7,0,0,2,210,0,0, +242,10,0,0,242,11,0,0,2,214,0,0,242,23,0,0,242,30,0,0,2,216,0,0,242,33,0,0,242,45,0,0, +2,224,0,0,242,51,0,0,242,54,0,0,2,237,0,0,242,56,0,0,242,57,0,0,2,241,0,0,242,64,0,0, +242,73,0,0,2,243,0,0,242,74,0,0,242,74,0,0,2,252,0,0,242,77,0,0,242,78,0,0,2,253,0,0, +242,80,0,0,242,80,0,0,3,2,0,0,242,81,0,0,242,93,0,0,2,255,0,0,242,108,0,0,242,108,0,0, +3,12,0,0,242,113,0,0,242,119,0,0,3,13,0,0,242,120,0,0,242,120,0,0,3,20,0,0,242,121,0,0, +242,122,0,0,3,20,0,0,242,123,0,0,242,123,0,0,3,168,0,0,242,131,0,0,242,131,0,0,1,255,0,0, +242,139,0,0,242,139,0,0,3,22,0,0,242,140,0,0,242,140,0,0,3,22,0,0,242,141,0,0,242,141,0,0, +3,23,0,0,242,142,0,0,242,142,0,0,3,23,0,0,242,144,0,0,242,145,0,0,3,24,0,0,242,146,0,0, +242,146,0,0,0,2,0,0,242,149,0,0,242,149,0,0,0,4,0,0,242,154,0,0,242,154,0,0,3,26,0,0, +242,156,0,0,242,156,0,0,1,207,0,0,242,157,0,0,242,158,0,0,3,27,0,0,242,160,0,0,242,164,0,0, +3,29,0,0,242,167,0,0,242,168,0,0,3,34,0,0,242,180,0,0,242,182,0,0,3,36,0,0,242,183,0,0, +242,183,0,0,3,38,0,0,242,185,0,0,242,185,0,0,3,39,0,0,242,186,0,0,242,186,0,0,3,39,0,0, +242,187,0,0,242,187,0,0,3,40,0,0,242,188,0,0,242,188,0,0,3,40,0,0,242,189,0,0,242,189,0,0, +3,41,0,0,242,190,0,0,242,190,0,0,3,41,0,0,242,192,0,0,242,192,0,0,1,138,0,0,242,193,0,0, +242,194,0,0,3,42,0,0,242,195,0,0,242,195,0,0,3,43,0,0,242,199,0,0,242,206,0,0,3,44,0,0, +242,208,0,0,242,211,0,0,3,52,0,0,242,212,0,0,242,212,0,0,3,110,0,0,242,219,0,0,242,220,0,0, +3,56,0,0,242,229,0,0,242,229,0,0,3,58,0,0,242,231,0,0,242,231,0,0,3,59,0,0,242,234,0,0, +242,234,0,0,3,60,0,0,242,237,0,0,242,237,0,0,3,61,0,0,242,241,0,0,242,242,0,0,3,62,0,0, +242,245,0,0,242,246,0,0,3,64,0,0,242,249,0,0,242,249,0,0,3,66,0,0,242,254,0,0,242,254,0,0, +3,67,0,0,243,2,0,0,243,5,0,0,3,68,0,0,243,9,0,0,243,12,0,0,3,72,0,0,243,28,0,0, +243,28,0,0,3,76,0,0,243,30,0,0,243,30,0,0,3,77,0,0,243,40,0,0,243,40,0,0,3,78,0,0, +243,50,0,0,243,50,0,0,1,171,0,0,243,55,0,0,243,56,0,0,3,79,0,0,243,88,0,0,243,91,0,0, +3,81,0,0,243,93,0,0,243,93,0,0,3,85,0,0,243,96,0,0,243,96,0,0,3,86,0,0,243,98,0,0, +243,99,0,0,3,87,0,0,243,129,0,0,243,129,0,0,2,53,0,0,243,130,0,0,243,130,0,0,2,54,0,0, +243,134,0,0,243,135,0,0,3,89,0,0,243,144,0,0,243,144,0,0,3,91,0,0,243,165,0,0,243,165,0,0, +3,92,0,0,243,190,0,0,243,191,0,0,3,93,0,0,243,193,0,0,243,193,0,0,3,95,0,0,243,197,0,0, +243,197,0,0,3,96,0,0,243,201,0,0,243,201,0,0,3,97,0,0,243,205,0,0,243,207,0,0,3,98,0,0, +243,209,0,0,243,209,0,0,3,101,0,0,243,221,0,0,243,221,0,0,3,102,0,0,243,224,0,0,243,224,0,0, +3,103,0,0,243,229,0,0,243,229,0,0,3,104,0,0,243,237,0,0,243,237,0,0,3,105,0,0,243,250,0,0, +243,251,0,0,3,106,0,0,243,253,0,0,243,253,0,0,4,147,0,0,243,255,0,0,243,255,0,0,3,108,0,0, +244,6,0,0,244,6,0,0,3,109,0,0,244,16,0,0,244,16,0,0,3,110,0,0,244,34,0,0,244,34,0,0, +3,111,0,0,244,36,0,0,244,36,0,0,3,112,0,0,244,37,0,0,244,37,0,0,3,36,0,0,244,50,0,0, +244,52,0,0,3,113,0,0,244,54,0,0,244,54,0,0,3,116,0,0,244,57,0,0,244,58,0,0,3,117,0,0, +244,60,0,0,244,60,0,0,3,119,0,0,244,63,0,0,244,63,0,0,3,120,0,0,244,65,0,0,244,65,0,0, +3,121,0,0,244,67,0,0,244,67,0,0,3,122,0,0,244,69,0,0,244,69,0,0,3,123,0,0,244,71,0,0, +244,71,0,0,3,124,0,0,244,75,0,0,244,75,0,0,3,125,0,0,244,78,0,0,244,78,0,0,3,126,0,0, +244,80,0,0,244,80,0,0,3,127,0,0,244,83,0,0,244,83,0,0,3,128,0,0,244,88,0,0,244,88,0,0, +3,129,0,0,244,92,0,0,244,93,0,0,3,130,0,0,244,95,0,0,244,95,0,0,3,132,0,0,244,97,0,0, +244,98,0,0,3,133,0,0,244,102,0,0,244,102,0,0,3,135,0,0,244,104,0,0,244,109,0,0,3,136,0,0, +244,112,0,0,244,114,0,0,3,142,0,0,244,116,0,0,244,116,0,0,3,145,0,0,244,119,0,0,244,121,0,0, +3,146,0,0,244,125,0,0,244,125,0,0,2,60,0,0,244,126,0,0,244,127,0,0,3,149,0,0,244,129,0,0, +244,130,0,0,3,151,0,0,244,132,0,0,244,135,0,0,3,153,0,0,244,139,0,0,244,139,0,0,3,157,0,0, +244,141,0,0,244,142,0,0,3,158,0,0,244,144,0,0,244,148,0,0,3,160,0,0,244,150,0,0,244,151,0,0, +3,165,0,0,244,158,0,0,244,158,0,0,3,167,0,0,244,161,0,0,244,161,0,0,3,136,0,0,244,173,0,0, +244,173,0,0,3,168,0,0,244,179,0,0,244,179,0,0,3,169,0,0,244,184,0,0,244,186,0,0,3,170,0,0, +244,189,0,0,244,190,0,0,3,173,0,0,244,192,0,0,244,194,0,0,3,175,0,0,244,196,0,0,244,196,0,0, +3,178,0,0,244,198,0,0,244,198,0,0,3,179,0,0,244,205,0,0,244,206,0,0,3,180,0,0,244,211,0,0, +244,211,0,0,3,182,0,0,244,214,0,0,244,219,0,0,3,183,0,0,244,222,0,0,244,223,0,0,3,189,0,0, +244,226,0,0,244,227,0,0,3,191,0,0,244,230,0,0,244,230,0,0,3,36,0,0,244,250,0,0,245,9,0,0, +3,193,0,0,245,21,0,0,245,43,0,0,3,209,0,0,245,44,0,0,245,44,0,0,0,18,0,0,245,45,0,0, +245,48,0,0,3,232,0,0,245,49,0,0,245,49,0,0,0,19,0,0,245,50,0,0,245,53,0,0,3,236,0,0, +245,54,0,0,245,54,0,0,0,17,0,0,245,55,0,0,245,64,0,0,3,240,0,0,245,65,0,0,245,65,0,0, +0,4,0,0,245,66,0,0,245,145,0,0,3,250,0,0,245,147,0,0,245,157,0,0,4,74,0,0,245,159,0,0, +245,162,0,0,4,85,0,0,245,164,0,0,245,167,0,0,4,89,0,0,245,170,0,0,245,177,0,0,4,93,0,0, +245,179,0,0,245,180,0,0,4,101,0,0,245,182,0,0,245,184,0,0,4,103,0,0,245,186,0,0,245,189,0,0, +4,106,0,0,245,191,0,0,245,197,0,0,4,110,0,0,245,199,0,0,245,203,0,0,4,117,0,0,245,205,0,0, +245,206,0,0,4,122,0,0,245,208,0,0,245,210,0,0,4,124,0,0,245,215,0,0,245,215,0,0,4,127,0,0, +245,218,0,0,245,218,0,0,4,128,0,0,245,220,0,0,245,220,0,0,4,129,0,0,245,222,0,0,245,223,0,0, +4,130,0,0,245,225,0,0,245,225,0,0,4,132,0,0,245,228,0,0,245,228,0,0,4,133,0,0,245,231,0,0, +245,231,0,0,4,134,0,0,245,235,0,0,245,235,0,0,4,135,0,0,245,238,0,0,245,238,0,0,4,136,0,0, +245,252,0,0,245,253,0,0,4,137,0,0,246,1,0,0,246,1,0,0,4,139,0,0,246,4,0,0,246,4,0,0, +4,140,0,0,246,16,0,0,246,16,0,0,4,141,0,0,246,19,0,0,246,19,0,0,4,142,0,0,246,25,0,0, +246,25,0,0,4,143,0,0,246,31,0,0,246,31,0,0,4,144,0,0,246,33,0,0,246,33,0,0,4,145,0,0, +246,36,0,0,246,37,0,0,4,146,0,0,246,41,0,0,246,42,0,0,4,148,0,0,246,46,0,0,246,48,0,0, +4,150,0,0,246,55,0,0,246,55,0,0,4,153,0,0,246,59,0,0,246,60,0,0,4,154,0,0,246,65,0,0, +246,65,0,0,4,156,0,0,246,68,0,0,246,68,0,0,4,157,0,0,246,71,0,0,246,71,0,0,4,158,0,0, +246,74,0,0,246,74,0,0,4,159,0,0,246,79,0,0,246,79,0,0,4,160,0,0,246,81,0,0,246,81,0,0, +4,161,0,0,246,83,0,0,246,85,0,0,4,162,0,0,246,88,0,0,246,88,0,0,4,165,0,0,246,93,0,0, +246,94,0,0,4,166,0,0,246,98,0,0,246,98,0,0,4,168,0,0,246,100,0,0,246,102,0,0,4,169,0,0, +246,105,0,0,246,107,0,0,4,172,0,0,246,109,0,0,246,109,0,0,4,175,0,0,246,111,0,0,246,111,0,0, +4,176,0,0,246,116,0,0,246,116,0,0,4,177,0,0,246,118,0,0,246,118,0,0,4,178,0,0,246,120,0,0, +246,121,0,0,4,179,0,0,246,123,0,0,246,124,0,0,4,181,0,0,246,127,0,0,246,127,0,0,4,183,0,0, +246,129,0,0,246,132,0,0,4,184,0,0,246,135,0,0,246,137,0,0,4,188,0,0,246,150,0,0,246,150,0,0, +4,191,0,0,246,152,0,0,246,155,0,0,4,192,0,0,246,160,0,0,246,161,0,0,4,196,0,0,246,167,0,0, +246,167,0,0,4,198,0,0,246,169,0,0,246,169,0,0,4,199,0,0,246,173,0,0,246,173,0,0,4,200,0,0, +246,182,0,0,246,183,0,0,4,201,0,0,246,187,0,0,246,187,0,0,4,203,0,0,246,190,0,0,246,190,0,0, +4,204,0,0,246,192,0,0,246,192,0,0,4,205,0,0,246,195,0,0,246,196,0,0,4,206,0,0,246,200,0,0, +246,200,0,0,4,208,0,0,246,207,0,0,246,207,0,0,4,209,0,0,246,209,0,0,246,209,0,0,4,210,0,0, +246,211,0,0,246,211,0,0,4,211,0,0,246,213,0,0,246,213,0,0,4,212,0,0,246,215,0,0,246,215,0,0, +4,213,0,0,246,217,0,0,246,217,0,0,4,214,0,0,246,221,0,0,246,222,0,0,4,215,0,0,246,226,0,0, +246,227,0,0,4,217,0,0,246,230,0,0,246,230,0,0,4,219,0,0,246,232,0,0,246,232,0,0,4,220,0,0, +246,236,0,0,246,237,0,0,4,221,0,0,246,240,0,0,246,242,0,0,4,223,0,0,246,250,0,0,246,250,0,0, +4,226,0,0,246,252,0,0,246,252,0,0,4,227,0,0,246,255,0,0,247,0,0,0,4,228,0,0,247,11,0,0, +247,12,0,0,4,230,0,0,247,14,0,0,247,14,0,0,4,232,0,0,247,20,0,0,247,21,0,0,4,233,0,0, +247,23,0,0,247,23,0,0,4,235,0,0,247,30,0,0,247,30,0,0,4,236,0,0,247,34,0,0,247,34,0,0, +4,237,0,0,247,40,0,0,247,41,0,0,4,238,0,0,247,43,0,0,247,43,0,0,4,240,0,0,247,46,0,0, +247,47,0,0,4,241,0,0,247,59,0,0,247,61,0,0,4,243,0,0,247,64,0,0,247,64,0,0,4,246,0,0, +247,67,0,0,247,67,0,0,4,247,0,0,247,71,0,0,247,71,0,0,4,248,0,0,247,77,0,0,247,77,0,0, +4,249,0,0,247,81,0,0,247,83,0,0,4,250,0,0,247,86,0,0,247,86,0,0,4,253,0,0,247,90,0,0, +247,91,0,0,4,254,0,0,247,94,0,0,247,95,0,0,5,0,0,0,247,105,0,0,247,105,0,0,5,2,0,0, +247,107,0,0,247,108,0,0,5,3,0,0,247,111,0,0,247,112,0,0,5,5,0,0,247,114,0,0,247,115,0,0, +5,7,0,0,247,124,0,0,247,125,0,0,5,9,0,0,247,128,0,0,247,129,0,0,5,11,0,0,247,131,0,0, +247,132,0,0,5,13,0,0,247,134,0,0,247,136,0,0,5,15,0,0,247,140,0,0,247,140,0,0,5,18,0,0, +247,147,0,0,247,148,0,0,5,19,0,0,247,150,0,0,247,150,0,0,5,21,0,0,247,156,0,0,247,156,0,0, +5,22,0,0,247,159,0,0,247,160,0,0,5,23,0,0,247,162,0,0,247,162,0,0,5,25,0,0,247,164,0,0, +247,166,0,0,5,26,0,0,247,169,0,0,247,171,0,0,5,29,0,0,247,173,0,0,247,174,0,0,5,32,0,0, +247,181,0,0,247,182,0,0,5,34,0,0,247,185,0,0,247,186,0,0,5,36,0,0,247,189,0,0,247,189,0,0, +5,38,0,0,247,191,0,0,247,192,0,0,5,39,0,0,247,194,0,0,247,194,0,0,5,41,0,0,247,196,0,0, +247,197,0,0,5,42,0,0,247,201,0,0,247,202,0,0,5,44,0,0,247,204,0,0,247,206,0,0,5,46,0,0, +247,208,0,0,247,208,0,0,5,49,0,0,247,210,0,0,247,210,0,0,5,50,0,0,247,215,0,0,247,218,0,0, +5,51,0,0,247,228,0,0,247,230,0,0,5,55,0,0,247,236,0,0,247,236,0,0,5,58,0,0,247,239,0,0, +247,239,0,0,5,59,0,0,247,242,0,0,247,243,0,0,5,60,0,0,247,245,0,0,247,245,0,0,5,62,0,0, +247,247,0,0,247,247,0,0,5,63,0,0,247,250,0,0,247,251,0,0,5,64,0,0,248,2,0,0,248,2,0,0, +5,66,0,0,248,5,0,0,248,7,0,0,5,67,0,0,248,10,0,0,248,10,0,0,1,150,0,0,248,11,0,0, +248,11,0,0,0,142,0,0,248,12,0,0,248,12,0,0,1,150,0,0,248,13,0,0,248,13,0,0,5,70,0,0, +248,15,0,0,248,16,0,0,5,71,0,0,248,18,0,0,248,18,0,0,5,73,0,0,248,21,0,0,248,22,0,0, +5,74,0,0,248,24,0,0,248,24,0,0,5,76,0,0,248,29,0,0,248,29,0,0,5,77,0,0,248,39,0,0, +248,42,0,0,5,78,0,0,248,47,0,0,248,47,0,0,5,82,0,0,248,62,0,0,248,62,0,0,5,83,0,0, +248,74,0,0,248,74,0,0,5,84,0,0,248,76,0,0,248,76,0,0,5,85,0,0,248,80,0,0,248,80,0,0, +5,86,0,0,248,83,0,0,248,83,0,0,5,87,0,0,248,94,0,0,248,94,0,0,5,88,0,0,248,99,0,0, +248,99,0,0,5,89,0,0,248,109,0,0,248,109,0,0,5,90,0,0,248,121,0,0,248,121,0,0,5,91,0,0, +248,123,0,0,248,125,0,0,5,92,0,0,248,129,0,0,248,130,0,0,5,95,0,0,248,132,0,0,248,135,0,0, +5,97,0,0,248,145,0,0,248,145,0,0,5,101,0,0,248,151,0,0,248,151,0,0,5,102,0,0,248,192,0,0, +248,193,0,0,5,103,0,0,248,204,0,0,248,204,0,0,5,105,0,0,248,215,0,0,248,215,0,0,5,106,0,0, +248,217,0,0,248,217,0,0,5,107,0,0,248,229,0,0,248,229,0,0,3,12,0,0,248,239,0,0,248,239,0,0, +5,108,0,0,248,255,0,0,248,255,0,0,5,109,0,1,241,127,0,1,241,127,0,0,3,249,0,1,243,8,0,1, +243,8,0,0,4,255,0,1,243,11,0,1,243,11,0,0,5,6,0,1,243,13,0,1,243,13,0,0,4,52,0,1, +243,14,0,1,243,14,0,0,4,53,0,1,243,15,0,1,243,15,0,0,4,54,0,1,243,16,0,1,243,16,0,0, +2,12,0,1,243,25,0,1,243,25,0,0,2,152,0,1,243,33,0,1,243,33,0,0,3,46,0,1,243,38,0,1, +243,38,0,0,4,247,0,1,243,39,0,1,243,39,0,0,4,245,0,1,243,41,0,1,243,41,0,0,5,4,0,1, +243,42,0,1,243,42,0,0,5,5,0,1,243,45,0,1,243,45,0,0,5,71,0,1,243,49,0,1,243,49,0,0, +3,185,0,1,243,50,0,1,243,50,0,0,2,173,0,1,243,54,0,1,243,54,0,0,5,75,0,1,243,75,0,1, +243,75,0,0,1,251,0,1,243,78,0,1,243,78,0,0,4,125,0,1,243,79,0,1,243,79,0,0,4,125,0,1, +243,104,0,1,243,104,0,0,5,72,0,1,243,106,0,1,243,106,0,0,4,27,0,1,243,116,0,1,243,116,0,0, +3,59,0,1,243,119,0,1,243,119,0,0,3,192,0,1,243,120,0,1,243,120,0,0,4,51,0,1,243,129,0,1, +243,129,0,0,1,220,0,1,243,130,0,1,243,130,0,0,2,206,0,1,243,147,0,1,243,147,0,0,2,162,0,1, +243,151,0,1,243,151,0,0,3,183,0,1,243,153,0,1,243,153,0,0,3,97,0,1,243,158,0,1,243,158,0,0, +1,139,0,1,243,159,0,1,243,159,0,0,2,117,0,1,243,167,0,1,243,167,0,0,1,160,0,1,243,168,0,1, +243,168,0,0,3,248,0,1,243,173,0,1,243,173,0,0,4,152,0,1,243,178,0,1,243,178,0,0,3,222,0,1, +243,181,0,1,243,181,0,0,1,134,0,1,243,192,0,1,243,192,0,0,3,115,0,1,243,193,0,1,243,193,0,0, +2,87,0,1,243,194,0,1,243,194,0,0,5,48,0,1,243,195,0,1,243,195,0,0,4,231,0,1,243,197,0,1, +243,197,0,0,4,88,0,1,243,198,0,1,243,198,0,0,1,249,0,1,243,200,0,1,243,200,0,0,3,126,0,1, +243,202,0,1,243,202,0,0,4,115,0,1,243,205,0,1,243,205,0,0,2,221,0,1,243,208,0,1,243,208,0,0, +3,132,0,1,243,211,0,1,243,211,0,0,3,131,0,1,243,212,0,1,243,212,0,0,4,227,0,1,243,214,0,1, +243,214,0,0,4,120,0,1,243,217,0,1,243,217,0,0,4,160,0,1,243,219,0,1,243,219,0,0,4,176,0,1, +243,224,0,1,243,224,0,0,1,150,0,1,243,226,0,1,243,226,0,0,2,165,0,1,243,229,0,1,243,229,0,0, +2,60,0,1,243,232,0,1,243,232,0,0,4,75,0,1,243,235,0,1,243,235,0,0,4,1,0,1,243,244,0,1, +243,244,0,0,1,159,0,1,243,247,0,1,243,247,0,0,1,166,0,1,244,4,0,1,244,4,0,0,4,208,0,1, +244,8,0,1,244,8,0,0,4,204,0,1,244,9,0,1,244,9,0,0,4,212,0,1,244,14,0,1,244,14,0,0, +4,223,0,1,244,21,0,1,244,21,0,0,4,211,0,1,244,31,0,1,244,31,0,0,4,48,0,1,244,65,0,1, +244,65,0,0,1,223,0,1,244,77,0,1,244,77,0,0,2,143,0,1,244,78,0,1,244,78,0,0,2,144,0,1, +244,81,0,1,244,81,0,0,3,221,0,1,244,85,0,1,244,85,0,0,4,11,0,1,244,100,0,1,244,100,0,0, +1,138,0,1,244,101,0,1,244,101,0,0,3,199,0,1,244,123,0,1,244,123,0,0,4,217,0,1,244,128,0,1, +244,128,0,0,4,4,0,1,244,137,0,1,244,137,0,0,3,159,0,1,244,142,0,1,244,142,0,0,3,92,0,1, +244,148,0,1,244,148,0,0,5,29,0,1,244,153,0,1,244,153,0,0,1,136,0,1,244,154,0,1,244,154,0,0, +1,136,0,1,244,155,0,1,244,155,0,0,1,136,0,1,244,156,0,1,244,156,0,0,1,136,0,1,244,161,0,1, +244,161,0,0,2,51,0,1,244,163,0,1,244,163,0,0,2,193,0,1,244,167,0,1,244,167,0,0,1,188,0,1, +244,169,0,1,244,169,0,0,3,67,0,1,244,172,0,1,244,172,0,0,3,168,0,1,244,176,0,1,244,176,0,0, +5,77,0,1,244,178,0,1,244,178,0,0,0,3,0,1,244,179,0,1,244,179,0,0,1,255,0,1,244,187,0,1, +244,187,0,0,2,75,0,1,244,188,0,1,244,188,0,0,2,16,0,1,244,190,0,1,244,190,0,0,2,25,0,1, +244,191,0,1,244,191,0,0,3,219,0,1,244,192,0,1,244,192,0,0,3,219,0,1,244,193,0,1,244,193,0,0, +1,235,0,1,244,194,0,1,244,194,0,0,1,236,0,1,244,196,0,1,244,196,0,0,2,135,0,1,244,197,0,1, +244,197,0,0,2,103,0,1,244,198,0,1,244,198,0,0,2,103,0,1,244,203,0,1,244,203,0,0,3,78,0,1, +244,204,0,1,244,204,0,0,1,246,0,1,244,205,0,1,244,205,0,0,3,18,0,1,244,206,0,1,244,206,0,0, +2,24,0,1,244,207,0,1,244,207,0,0,3,253,0,1,244,212,0,1,244,212,0,0,1,168,0,1,244,214,0,1, +244,214,0,0,3,212,0,1,244,220,0,1,244,220,0,0,4,232,0,1,244,221,0,1,244,221,0,0,3,76,0,1, +244,222,0,1,244,222,0,0,1,252,0,1,244,223,0,1,244,223,0,0,5,74,0,1,244,224,0,1,244,224,0,0, +2,164,0,1,244,225,0,1,244,225,0,0,5,40,0,1,244,226,0,1,244,226,0,0,2,2,0,1,244,230,0,1, +244,230,0,0,3,135,0,1,244,240,0,1,244,240,0,0,2,198,0,1,244,241,0,1,244,241,0,0,3,99,0,1, +244,246,0,1,244,246,0,0,1,148,0,1,244,247,0,1,244,247,0,0,1,240,0,1,244,251,0,1,244,251,0,0, +5,106,0,1,245,0,0,1,245,0,0,0,1,228,0,1,245,1,0,1,245,1,0,0,3,88,0,1,245,4,0,1, +245,4,0,0,3,62,0,1,245,8,0,1,245,8,0,0,1,162,0,1,245,10,0,1,245,10,0,0,1,163,0,1, +245,11,0,1,245,11,0,0,2,243,0,1,245,12,0,1,245,12,0,0,2,197,0,1,245,13,0,1,245,13,0,0, +1,135,0,1,245,17,0,1,245,17,0,0,1,241,0,1,245,18,0,1,245,18,0,0,1,158,0,1,245,19,0,1, +245,19,0,0,1,254,0,1,245,20,0,1,245,20,0,0,2,58,0,1,245,21,0,1,245,21,0,0,2,201,0,1, +245,22,0,1,245,22,0,0,1,169,0,1,245,23,0,1,245,23,0,0,2,19,0,1,245,24,0,1,245,24,0,0, +2,156,0,1,245,37,0,1,245,37,0,0,1,222,0,1,245,39,0,1,245,39,0,0,2,13,0,1,245,40,0,1, +245,40,0,0,4,218,0,1,245,44,0,1,245,44,0,0,4,141,0,1,245,52,0,1,245,52,0,0,2,81,0,1, +245,53,0,1,245,53,0,0,2,81,0,1,245,71,0,1,245,71,0,0,4,163,0,1,245,73,0,1,245,73,0,0, +4,180,0,1,245,74,0,1,245,74,0,0,3,172,0,1,245,75,0,1,245,75,0,0,4,174,0,1,245,76,0,1, +245,76,0,0,4,179,0,1,245,77,0,1,245,77,0,0,4,195,0,1,245,78,0,1,245,78,0,0,4,219,0,1, +245,83,0,1,245,83,0,0,1,151,0,1,245,107,0,1,245,107,0,0,2,2,0,1,245,110,0,1,245,110,0,0, +3,212,0,1,245,113,0,1,245,113,0,0,4,233,0,1,245,117,0,1,245,117,0,0,2,220,0,1,245,119,0,1, +245,119,0,0,4,235,0,1,245,123,0,1,245,123,0,0,1,252,0,1,245,125,0,1,245,125,0,0,5,91,0,1, +245,130,0,1,245,130,0,0,2,44,0,1,245,136,0,1,245,136,0,0,1,246,0,1,245,138,0,1,245,138,0,0, +3,70,0,1,245,139,0,1,245,139,0,0,4,95,0,1,245,140,0,1,245,140,0,0,2,205,0,1,245,149,0,1, +245,149,0,0,5,68,0,1,245,150,0,1,245,150,0,0,3,7,0,1,245,164,0,1,245,164,0,0,1,136,0,1, +245,165,0,1,245,165,0,0,3,91,0,1,245,168,0,1,245,168,0,0,1,170,0,1,245,169,0,1,245,169,0,0, +2,200,0,1,245,170,0,1,245,170,0,0,2,25,0,1,245,177,0,1,245,177,0,0,5,105,0,1,245,180,0,1, +245,180,0,0,2,1,0,1,245,182,0,1,245,182,0,0,1,170,0,1,245,183,0,1,245,183,0,0,2,164,0,1, +245,184,0,1,245,184,0,0,3,219,0,1,245,185,0,1,245,185,0,0,2,136,0,1,245,187,0,1,245,187,0,0, +2,179,0,1,245,191,0,1,245,191,0,0,1,235,0,1,245,193,0,1,245,193,0,0,1,236,0,1,245,203,0,1, +245,203,0,0,2,135,0,1,245,206,0,1,245,206,0,0,2,136,0,1,245,213,0,1,245,213,0,0,3,53,0,1, +245,214,0,1,245,214,0,0,3,52,0,1,245,216,0,1,245,216,0,0,1,156,0,1,245,217,0,1,245,217,0,0, +1,144,0,1,245,233,0,1,245,233,0,0,1,229,0,1,245,234,0,1,245,234,0,0,1,243,0,1,245,250,0,1, +245,250,0,0,3,20,0,1,246,0,0,1,246,0,0,0,4,56,0,1,246,1,0,1,246,1,0,0,4,81,0,1, +246,2,0,1,246,2,0,0,4,64,0,1,246,3,0,1,246,3,0,0,4,57,0,1,246,4,0,1,246,4,0,0, +4,58,0,1,246,5,0,1,246,5,0,0,4,59,0,1,246,6,0,1,246,6,0,0,4,61,0,1,246,9,0,1, +246,9,0,0,3,187,0,1,246,10,0,1,246,10,0,0,4,105,0,1,246,13,0,1,246,13,0,0,4,60,0,1, +246,16,0,1,246,16,0,0,2,84,0,1,246,23,0,1,246,23,0,0,4,77,0,1,246,24,0,1,246,24,0,0, +4,79,0,1,246,25,0,1,246,25,0,0,4,78,0,1,246,27,0,1,246,27,0,0,4,65,0,1,246,28,0,1, +246,28,0,0,4,67,0,1,246,29,0,1,246,29,0,0,4,66,0,1,246,32,0,1,246,32,0,0,4,14,0,1, +246,34,0,1,246,34,0,0,4,102,0,1,246,38,0,1,246,38,0,0,4,50,0,1,246,43,0,1,246,43,0,0, +4,118,0,1,246,44,0,1,246,44,0,0,4,55,0,1,246,45,0,1,246,45,0,0,4,101,0,1,246,46,0,1, +246,46,0,0,4,113,0,1,246,51,0,1,246,51,0,0,4,49,0,1,246,54,0,1,246,54,0,0,4,89,0,1, +246,66,0,1,246,66,0,0,2,82,0,1,246,68,0,1,246,68,0,0,4,90,0,1,246,129,0,1,246,129,0,0, +3,237,0,1,246,134,0,1,246,134,0,0,2,241,0,1,246,138,0,1,246,138,0,0,1,132,0,1,246,141,0,1, +246,141,0,0,2,213,0,1,246,144,0,1,246,144,0,0,4,103,0,1,246,145,0,1,246,145,0,0,2,61,0,1, +246,150,0,1,246,150,0,0,2,172,0,1,246,151,0,1,246,151,0,0,4,133,0,1,246,152,0,1,246,152,0,0, +2,171,0,1,246,154,0,1,246,154,0,0,2,34,0,1,246,156,0,1,246,156,0,0,4,237,0,1,246,161,0,1, +246,161,0,0,5,54,0,1,246,162,0,1,246,162,0,0,2,219,0,1,246,166,0,1,246,166,0,0,4,153,0,1, +246,170,0,1,246,170,0,0,3,230,0,1,246,171,0,1,246,171,0,0,1,210,0,1,246,172,0,1,246,172,0,0, +3,158,0,1,246,173,0,1,246,173,0,0,4,5,0,1,246,176,0,1,246,176,0,0,0,49,0,1,246,178,0,1, +246,178,0,0,2,212,0,1,246,180,0,1,246,180,0,0,5,84,0,1,246,182,0,1,246,182,0,0,4,12,0,1, +246,189,0,1,246,189,0,0,5,52,0,1,246,191,0,1,246,191,0,0,3,49,0,1,246,193,0,1,246,193,0,0, +3,50,0,1,246,204,0,1,246,204,0,0,2,240,0,1,246,206,0,1,246,206,0,0,4,26,0,1,246,208,0,1, +246,208,0,0,4,186,0,1,246,210,0,1,246,210,0,0,1,234,0,1,246,225,0,1,246,225,0,0,2,102,0,1, +246,227,0,1,246,227,0,0,1,152,0,1,246,235,0,1,246,235,0,0,4,99,0,1,246,236,0,1,246,236,0,0, +4,98,0,1,246,240,0,1,246,240,0,0,5,39,0,1,246,251,0,1,246,251,0,0,4,155,0,1,247,224,0,1, +247,224,0,0,2,81,0,1,247,225,0,1,247,225,0,0,2,81,0,1,247,226,0,1,247,226,0,0,2,81,0,1, +247,227,0,1,247,227,0,0,2,81,0,1,247,228,0,1,247,228,0,0,2,81,0,1,247,229,0,1,247,229,0,0, +3,130,0,1,247,230,0,1,247,230,0,0,3,130,0,1,247,231,0,1,247,231,0,0,3,130,0,1,247,232,0,1, +247,232,0,0,3,130,0,1,247,233,0,1,247,233,0,0,3,130,0,1,247,234,0,1,247,234,0,0,3,130,0,1, +247,235,0,1,247,235,0,0,3,130,0,1,249,13,0,1,249,13,0,0,1,136,0,1,249,14,0,1,249,14,0,0, +1,136,0,1,249,22,0,1,249,22,0,0,3,252,0,1,249,26,0,1,249,26,0,0,3,4,0,1,249,29,0,1, +249,29,0,0,3,179,0,1,249,35,0,1,249,35,0,0,4,62,0,1,249,41,0,1,249,41,0,0,4,63,0,1, +249,65,0,1,249,65,0,0,4,33,0,1,249,66,0,1,249,66,0,0,5,23,0,1,249,67,0,1,249,67,0,0, +5,24,0,1,249,68,0,1,249,68,0,0,3,58,0,1,249,78,0,1,249,78,0,0,3,114,0,1,249,83,0,1, +249,83,0,0,5,56,0,1,249,85,0,1,249,85,0,0,5,16,0,1,249,90,0,1,249,90,0,0,5,65,0,1, +249,119,0,1,249,119,0,0,3,203,0,1,249,144,0,1,249,144,0,0,0,149,0,1,249,155,0,1,249,155,0,0, +4,222,0,1,249,166,0,1,249,166,0,0,4,229,0,1,249,180,0,1,249,180,0,0,4,127,0,1,249,183,0,1, +249,183,0,0,4,119,0,1,249,205,0,1,249,205,0,0,2,150,0,1,249,224,0,1,249,224,0,0,4,129,0,1, +249,225,0,1,249,225,0,0,1,136,0,1,249,230,0,1,249,230,0,0,4,191,0,1,249,233,0,1,249,233,0,0, +2,99,0,1,249,234,0,1,249,234,0,0,3,162,0,1,249,236,0,1,249,236,0,0,3,143,0,1,249,237,0,1, +249,237,0,0,2,125,0,1,249,239,0,1,249,239,0,0,2,104,0,1,249,240,0,1,249,240,0,0,4,10,0,1, +249,242,0,1,249,242,0,0,1,230,0,1,249,243,0,1,249,243,0,0,2,57,0,1,249,249,0,1,249,249,0,0, +3,214,0,1,249,251,0,1,249,251,0,0,4,236,0,1,249,252,0,1,249,252,0,0,0,76,0,1,249,254,0,1, +249,254,0,0,3,251,0,1,250,121,0,1,250,121,0,0,3,134,0,1,250,122,0,1,250,122,0,0,2,56,0,1, +250,145,0,1,250,145,0,0,4,205,0,1,250,155,0,1,250,155,0,0,4,2,0,1,250,182,0,1,250,182,0,0, +3,232,0,1,250,193,0,1,250,193,0,0,4,140,0,0,0,0,0,0,0,0,0,136,0,0,0,248,0,0,1,252, +0,0,3,76,0,0,4,0,0,0,4,184,0,0,5,44,0,0,5,176,0,0,6,36,0,0,6,176,0,0,7,92, +0,0,7,232,0,0,8,140,0,0,9,40,0,0,9,128,0,0,10,92,0,0,10,252,0,0,11,88,0,0,11,204, +0,0,12,40,0,0,12,228,0,0,13,244,0,0,14,96,0,0,15,0,0,0,15,172,0,0,16,36,0,0,16,156, +0,0,17,8,0,0,17,204,0,0,18,68,0,0,18,188,0,0,19,52,0,0,19,176,0,0,20,0,0,0,20,120, +0,0,20,232,0,0,21,124,0,0,21,240,0,0,22,176,0,0,23,64,0,0,24,8,0,0,24,104,0,0,24,220, +0,0,25,60,0,0,25,200,0,0,26,80,0,0,26,184,0,0,27,32,0,0,27,220,0,0,28,204,0,0,29,124, +0,0,30,148,0,0,31,228,0,0,33,48,0,0,34,164,0,0,37,228,0,0,39,172,0,0,40,84,0,0,41,28, +0,0,42,196,0,0,44,224,0,0,45,200,0,0,46,240,0,0,48,96,0,0,49,112,0,0,50,72,0,0,51,232, +0,0,52,212,0,0,53,152,0,0,56,28,0,0,57,168,0,0,58,84,0,0,59,48,0,0,59,252,0,0,61,160, +0,0,62,136,0,0,63,232,0,0,65,64,0,0,65,252,0,0,66,216,0,0,67,196,0,0,68,228,0,0,70,116, +0,0,71,220,0,0,74,80,0,0,75,48,0,0,76,124,0,0,77,4,0,0,77,144,0,0,78,96,0,0,79,68, +0,0,80,44,0,0,81,52,0,0,81,148,0,0,82,52,0,0,83,60,0,0,83,240,0,0,85,20,0,0,86,4, +0,0,86,144,0,0,88,20,0,0,89,104,0,0,90,156,0,0,91,236,0,0,93,0,0,0,93,224,0,0,94,104, +0,0,95,96,0,0,96,180,0,0,97,144,0,0,98,52,0,0,98,152,0,0,99,56,0,0,100,4,0,0,100,192, +0,0,102,88,0,0,103,44,0,0,103,244,0,0,104,164,0,0,105,176,0,0,106,60,0,0,106,224,0,0,108,8, +0,0,108,248,0,0,110,20,0,0,110,196,0,0,111,76,0,0,112,36,0,0,112,212,0,0,113,196,0,0,114,88, +0,0,115,88,0,0,115,236,0,0,117,36,0,0,118,24,0,0,119,8,0,0,120,20,0,0,121,56,0,0,122,128, +0,0,123,152,0,0,125,100,0,0,126,68,0,0,127,36,0,0,127,188,0,0,128,120,0,0,129,36,0,0,129,204, +0,0,130,104,0,0,131,180,0,0,132,188,0,0,134,56,0,0,135,4,0,0,135,240,0,0,136,192,0,0,137,144, +0,0,139,20,0,0,140,60,0,0,141,36,0,0,142,24,0,0,143,212,0,0,145,68,0,0,146,164,0,0,148,16, +0,0,149,140,0,0,150,252,0,0,152,12,0,0,153,124,0,0,155,4,0,0,156,120,0,0,158,8,0,0,160,140, +0,0,161,136,0,0,163,168,0,0,164,168,0,0,165,208,0,0,166,200,0,0,168,188,0,0,170,108,0,0,172,8, +0,0,173,8,0,0,174,112,0,0,175,108,0,0,176,28,0,0,176,204,0,0,177,212,0,0,178,168,0,0,179,184, +0,0,180,144,0,0,181,180,0,0,182,232,0,0,184,40,0,0,185,88,0,0,186,144,0,0,187,56,0,0,188,188, +0,0,190,136,0,0,192,72,0,0,194,20,0,0,195,240,0,0,197,116,0,0,199,56,0,0,200,244,0,0,202,144, +0,0,203,252,0,0,205,188,0,0,208,72,0,0,208,236,0,0,210,32,0,0,211,48,0,0,212,136,0,0,214,52, +0,0,214,220,0,0,215,252,0,0,217,160,0,0,218,232,0,0,220,64,0,0,221,48,0,0,222,44,0,0,223,148, +0,0,224,116,0,0,225,56,0,0,226,88,0,0,227,32,0,0,228,212,0,0,229,172,0,0,230,148,0,0,231,8, +0,0,231,184,0,0,234,104,0,0,235,72,0,0,237,88,0,0,238,116,0,0,240,0,0,0,241,56,0,0,242,32, +0,0,242,248,0,0,243,220,0,0,244,164,0,0,245,144,0,0,246,132,0,0,247,128,0,0,248,144,0,0,249,196, +0,0,250,208,0,0,251,184,0,0,252,176,0,0,253,180,0,0,254,212,0,0,255,124,0,1,1,44,0,1,3,80, +0,1,4,100,0,1,5,116,0,1,6,144,0,1,7,188,0,1,8,132,0,1,10,148,0,1,11,36,0,1,12,68, +0,1,12,244,0,1,13,168,0,1,15,84,0,1,16,36,0,1,16,216,0,1,17,160,0,1,18,96,0,1,19,108, +0,1,20,148,0,1,21,48,0,1,21,240,0,1,23,100,0,1,24,128,0,1,25,20,0,1,26,84,0,1,27,208, +0,1,29,52,0,1,31,104,0,1,32,160,0,1,34,228,0,1,35,48,0,1,36,156,0,1,37,48,0,1,38,8, +0,1,39,236,0,1,41,180,0,1,43,108,0,1,44,240,0,1,46,216,0,1,48,20,0,1,49,80,0,1,50,120, +0,1,51,196,0,1,52,216,0,1,53,224,0,1,55,16,0,1,56,76,0,1,57,108,0,1,58,176,0,1,60,44, +0,1,61,120,0,1,62,228,0,1,64,76,0,1,65,56,0,1,66,172,0,1,67,148,0,1,69,64,0,1,70,24, +0,1,71,76,0,1,72,244,0,1,74,88,0,1,75,100,0,1,76,96,0,1,78,24,0,1,79,156,0,1,81,164, +0,1,83,24,0,1,84,4,0,1,84,252,0,1,86,4,0,1,86,252,0,1,88,208,0,1,89,240,0,1,90,252, +0,1,92,20,0,1,93,16,0,1,94,48,0,1,95,88,0,1,96,100,0,1,97,24,0,1,98,52,0,1,99,76, +0,1,100,112,0,1,101,164,0,1,102,216,0,1,103,120,0,1,104,88,0,1,105,52,0,1,106,184,0,1,108,72, +0,1,109,232,0,1,111,72,0,1,112,228,0,1,113,136,0,1,114,72,0,1,115,48,0,1,115,216,0,1,116,200, +0,1,117,176,0,1,119,20,0,1,120,68,0,1,122,36,0,1,122,176,0,1,123,148,0,1,123,232,0,1,124,152, +0,1,125,80,0,1,126,4,0,1,126,212,0,1,127,96,0,1,127,224,0,1,128,208,0,1,130,96,0,1,131,96, +0,1,132,244,0,1,133,112,0,1,134,128,0,1,135,220,0,1,137,52,0,1,138,112,0,1,140,60,0,1,141,96, +0,1,142,244,0,1,144,120,0,1,146,88,0,1,148,24,0,1,150,20,0,1,150,232,0,1,152,184,0,1,154,104, +0,1,155,64,0,1,156,164,0,1,157,136,0,1,158,108,0,1,159,64,0,1,160,48,0,1,161,80,0,1,162,24, +0,1,162,172,0,1,163,244,0,1,164,104,0,1,164,252,0,1,165,152,0,1,166,4,0,1,166,112,0,1,166,232, +0,1,168,92,0,1,168,224,0,1,169,168,0,1,170,80,0,1,170,168,0,1,171,36,0,1,171,208,0,1,172,84, +0,1,173,48,0,1,174,68,0,1,175,120,0,1,176,60,0,1,176,204,0,1,177,140,0,1,178,92,0,1,178,200, +0,1,179,140,0,1,180,168,0,1,181,224,0,1,182,108,0,1,182,248,0,1,183,164,0,1,183,252,0,1,184,140, +0,1,185,172,0,1,186,212,0,1,187,196,0,1,188,60,0,1,188,244,0,1,189,180,0,1,190,4,0,1,190,200, +0,1,191,100,0,1,191,252,0,1,192,180,0,1,193,44,0,1,194,68,0,1,195,92,0,1,196,56,0,1,197,20, +0,1,197,240,0,1,198,208,0,1,199,232,0,1,200,240,0,1,201,248,0,1,202,112,0,1,203,52,0,1,203,144, +0,1,204,16,0,1,204,160,0,1,205,140,0,1,206,168,0,1,207,28,0,1,207,160,0,1,208,8,0,1,208,76, +0,1,208,216,0,1,209,40,0,1,209,140,0,1,210,20,0,1,210,136,0,1,211,0,0,1,211,80,0,1,211,160, +0,1,212,68,0,1,212,192,0,1,213,108,0,1,214,12,0,1,214,244,0,1,215,188,0,1,217,36,0,1,217,200, +0,1,218,52,0,1,218,160,0,1,219,12,0,1,219,120,0,1,219,236,0,1,220,252,0,1,222,8,0,1,222,72, +0,1,222,244,0,1,223,244,0,1,224,160,0,1,225,72,0,1,226,72,0,1,227,72,0,1,227,220,0,1,228,104, +0,1,229,216,0,1,230,168,0,1,231,36,0,1,231,196,0,1,232,20,0,1,232,100,0,1,233,48,0,1,234,4, +0,1,234,88,0,1,234,196,0,1,235,88,0,1,235,236,0,1,236,224,0,1,237,164,0,1,238,64,0,1,240,216, +0,1,241,156,0,1,241,236,0,1,242,188,0,1,243,80,0,1,244,56,0,1,245,8,0,1,246,24,0,1,246,240, +0,1,247,184,0,1,248,32,0,1,248,196,0,1,249,92,0,1,250,0,0,1,250,220,0,1,251,184,0,1,252,120, +0,1,253,100,0,1,254,160,0,1,255,220,0,2,1,24,0,2,2,80,0,2,3,12,0,2,3,200,0,2,4,132, +0,2,5,64,0,2,6,104,0,2,7,8,0,2,8,80,0,2,8,156,0,2,9,56,0,2,10,20,0,2,11,92, +0,2,12,172,0,2,13,36,0,2,13,156,0,2,14,184,0,2,15,88,0,2,16,32,0,2,16,212,0,2,17,36, +0,2,17,204,0,2,19,24,0,2,20,112,0,2,21,76,0,2,22,40,0,2,22,172,0,2,23,12,0,2,24,40, +0,2,25,8,0,2,25,68,0,2,25,128,0,2,25,188,0,2,25,248,0,2,26,104,0,2,26,216,0,2,27,24, +0,2,27,84,0,2,27,212,0,2,28,152,0,2,29,96,0,2,29,180,0,2,30,236,0,2,31,224,0,2,32,172, +0,2,33,104,0,2,34,48,0,2,34,232,0,2,35,160,0,2,36,212,0,2,37,212,0,2,38,116,0,2,39,8, +0,2,39,172,0,2,40,228,0,2,42,76,0,2,43,52,0,2,44,20,0,2,44,252,0,2,45,148,0,2,46,44, +0,2,46,192,0,2,47,84,0,2,47,232,0,2,48,124,0,2,48,204,0,2,49,28,0,2,49,108,0,2,49,188, +0,2,50,52,0,2,50,180,0,2,51,52,0,2,51,252,0,2,52,200,0,2,54,64,0,2,54,156,0,2,55,168, +0,2,56,180,0,2,57,144,0,2,58,124,0,2,60,168,0,2,61,252,0,2,62,132,0,2,63,92,0,2,64,0, +0,2,64,68,0,2,64,248,0,2,66,40,0,2,67,88,0,2,67,244,0,2,68,232,0,2,69,220,0,2,70,76, +0,2,71,176,0,2,72,120,0,2,73,80,0,2,73,180,0,2,74,72,0,2,75,48,0,2,75,248,0,2,76,156, +0,2,77,64,0,2,77,228,0,2,78,132,0,2,79,184,0,2,80,136,0,2,81,184,0,2,82,100,0,2,83,16, +0,2,84,16,0,2,84,156,0,2,85,104,0,2,85,220,0,2,86,96,0,2,86,224,0,2,87,116,0,2,88,24, +0,2,88,196,0,2,89,160,0,2,90,100,0,2,90,228,0,2,91,100,0,2,91,232,0,2,92,208,0,2,93,144, +0,2,95,40,0,2,95,248,0,2,96,188,0,2,97,156,0,2,97,252,0,2,98,188,0,2,99,220,0,2,100,252, +0,2,102,52,0,2,103,104,0,2,104,156,0,2,105,208,0,2,106,168,0,2,107,128,0,2,107,236,0,2,108,88, +0,2,108,196,0,2,109,44,0,2,110,28,0,2,110,236,0,2,111,248,0,2,112,124,0,2,113,8,0,2,114,80, +0,2,114,212,0,2,115,104,0,2,116,128,0,2,117,116,0,2,118,68,0,2,118,240,0,2,119,192,0,2,120,120, +0,2,121,196,0,2,122,252,0,2,124,76,0,2,125,28,0,2,126,104,0,2,126,228,0,2,127,208,0,2,129,28, +0,2,130,20,0,2,131,40,0,2,131,196,0,2,132,128,0,2,133,176,0,2,134,108,0,2,135,52,0,2,135,236, +0,2,136,180,0,2,137,124,0,2,138,140,0,2,139,72,0,2,140,12,0,2,141,120,0,2,142,40,0,2,142,144, +0,2,143,108,0,2,144,76,0,2,144,200,0,2,146,136,0,2,147,64,0,2,148,36,0,2,149,8,0,2,149,188, +0,2,151,216,0,2,152,184,0,2,153,88,0,2,154,108,0,2,155,96,0,2,156,248,0,2,157,176,0,2,158,48, +0,2,158,252,0,2,159,164,0,2,160,52,0,2,162,60,0,2,162,236,0,2,163,120,0,2,164,36,0,2,164,216, +0,2,165,88,0,2,166,184,0,2,168,36,0,2,169,44,0,2,169,248,0,2,171,16,0,2,172,20,0,2,172,92, +0,2,173,168,0,2,174,212,0,2,176,128,0,2,177,196,0,2,178,96,0,2,179,20,0,2,179,176,0,2,180,160, +0,2,181,132,0,2,182,200,0,2,184,20,0,2,185,56,0,2,186,112,0,2,187,60,0,2,188,8,0,2,188,216, +0,2,189,100,0,2,189,224,0,2,190,208,0,2,191,144,0,2,192,88,0,2,193,8,0,2,193,248,0,2,195,68, +0,2,195,224,0,2,196,124,0,2,197,24,0,2,197,176,0,2,198,64,0,2,198,160,0,2,199,132,0,2,200,160, +0,2,201,188,0,2,202,40,0,2,202,180,0,2,204,8,0,2,204,192,0,2,205,144,0,2,206,68,0,2,207,20, +0,2,207,172,0,2,208,116,0,2,209,40,0,2,209,168,0,2,210,160,0,2,211,148,0,2,212,216,0,2,213,152, +0,2,214,92,0,2,214,240,0,2,215,204,0,2,216,128,0,2,217,96,0,2,218,32,0,2,218,140,0,2,219,48, +0,2,219,244,0,2,220,92,0,2,220,188,0,2,221,124,0,2,222,0,0,2,222,200,0,2,223,176,0,2,224,188, +0,2,225,204,0,2,226,180,0,2,227,216,0,2,231,84,0,2,233,20,0,2,234,192,0,2,236,40,0,2,237,156, +0,2,238,156,0,2,239,112,0,2,240,180,0,2,241,148,0,2,242,148,0,2,243,172,0,2,244,108,0,2,245,68, +0,2,246,108,0,2,247,56,0,2,248,4,0,2,248,212,0,2,249,164,0,2,250,112,0,2,252,60,0,2,253,8, +0,2,254,120,0,2,255,0,0,2,255,64,0,3,0,20,0,3,0,180,0,3,2,8,0,3,3,200,0,3,4,48, +0,3,5,64,0,3,5,232,0,3,6,200,0,3,7,172,0,3,8,96,0,3,9,32,0,3,9,224,0,3,10,148, +0,3,11,220,0,3,12,220,0,3,13,100,0,3,13,196,0,3,14,76,0,3,14,164,0,3,15,0,0,3,15,84, +0,3,15,176,0,3,16,104,0,3,17,60,0,3,17,244,0,3,18,96,0,3,18,208,0,3,19,116,0,3,20,20, +0,3,20,184,0,3,21,92,0,3,22,24,0,3,22,180,0,3,23,88,0,3,24,52,0,3,24,224,0,3,26,0, +0,3,26,136,0,3,26,216,0,3,27,72,0,3,27,184,0,3,28,84,0,3,28,228,0,3,29,220,0,3,30,104, +0,3,30,220,0,3,31,92,0,3,32,120,0,3,33,24,0,3,33,204,0,3,34,64,0,3,34,196,0,3,35,84, +0,3,35,200,0,3,36,76,0,3,36,200,0,3,37,104,0,3,38,12,0,3,38,180,0,3,39,108,0,3,40,252, +0,3,41,252,0,3,42,228,0,3,44,84,0,3,45,16,0,3,45,220,0,3,46,152,0,3,47,100,0,3,48,8, +0,3,49,28,0,3,49,216,0,3,50,176,0,3,51,200,0,3,52,216,0,3,53,84,0,3,54,68,0,3,54,100, +0,3,55,64,0,3,56,152,0,3,58,16,0,3,58,244,0,3,59,84,0,3,60,88,0,3,61,36,0,3,61,172, +0,3,62,116,0,3,63,72,0,3,64,92,0,3,65,212,0,3,66,216,0,3,67,192,0,3,68,184,0,3,69,100, +0,3,70,24,0,3,70,212,0,3,71,120,0,3,72,128,0,3,73,80,0,3,73,200,0,3,74,140,0,3,75,32, +0,3,75,204,0,3,76,236,0,3,78,80,0,3,79,124,0,3,80,68,0,3,81,4,0,3,81,152,0,3,82,16, +0,3,82,188,0,3,83,108,0,3,84,68,0,3,85,156,0,3,86,72,0,3,87,64,0,3,87,220,0,3,88,148, +0,3,90,72,0,3,91,20,0,3,91,136,0,3,92,76,0,3,93,132,0,3,94,76,0,3,95,72,0,3,96,48, +0,3,97,56,0,3,98,12,0,3,99,172,0,3,100,208,0,3,101,160,0,3,103,24,0,3,103,144,0,3,104,64, +0,3,105,76,0,3,106,40,0,3,107,28,0,3,108,92,0,3,108,236,0,3,109,100,0,3,109,236,0,3,111,80, +0,3,112,0,0,3,112,220,0,3,114,104,0,3,115,44,0,3,116,12,0,3,116,208,0,3,117,240,0,3,118,140, +0,3,119,64,0,3,120,24,0,3,120,160,0,3,121,112,0,3,121,252,0,3,124,52,0,3,125,144,0,3,126,224, +0,3,127,208,0,3,128,140,0,3,129,232,0,3,130,160,0,3,131,28,0,3,131,248,0,3,132,188,0,3,134,92, +0,3,135,84,0,3,136,20,0,3,136,216,0,3,138,8,0,3,139,64,0,3,140,72,0,3,140,200,0,3,142,44, +0,3,143,8,0,3,143,180,0,3,144,96,0,3,144,228,0,3,145,124,0,3,146,8,0,3,146,252,0,3,147,236, +0,3,149,44,0,3,149,188,0,3,150,168,0,3,151,116,0,3,152,48,0,3,152,192,0,3,153,216,0,3,154,220, +0,3,155,220,0,3,157,24,0,3,157,212,0,3,159,92,0,3,160,16,0,3,161,100,0,3,162,24,0,3,162,212, +0,3,163,188,0,3,164,232,0,3,165,132,0,3,166,76,0,3,166,244,0,3,167,136,0,3,169,4,0,3,169,112, +0,3,170,88,0,3,171,96,0,3,172,128,0,3,173,60,0,3,173,212,0,3,174,128,0,3,176,252,0,3,177,208, +0,3,178,100,0,3,179,140,0,3,180,48,0,3,181,104,0,3,182,4,0,3,183,64,0,3,185,16,0,3,185,176, +0,3,187,12,0,3,187,196,0,3,188,108,0,3,189,124,0,3,190,172,0,3,191,68,0,3,192,0,0,3,192,120, +0,3,193,112,0,3,194,108,0,3,195,16,0,3,196,128,0,3,197,172,0,3,198,208,0,3,199,208,0,3,200,216, +0,3,201,88,0,3,202,120,0,3,203,24,0,3,203,192,0,3,204,104,0,3,205,104,0,3,206,200,0,3,207,180, +0,3,208,192,0,3,209,96,0,3,210,4,0,3,210,236,0,3,212,200,0,3,213,136,0,3,214,172,0,3,215,172, +0,3,216,32,0,3,217,92,0,3,218,148,0,3,220,64,0,3,221,136,0,3,222,136,0,3,223,140,0,3,225,40, +0,3,227,40,0,3,228,88,0,3,229,116,0,3,231,68,0,3,232,156,0,3,235,28,0,3,236,88,0,3,237,172, +0,3,239,12,0,3,240,12,0,3,241,92,0,3,242,172,0,3,243,148,0,3,244,180,0,3,245,72,0,3,246,212, +0,3,248,100,0,3,249,100,0,3,251,40,0,3,253,136,0,3,255,180,0,4,0,172,0,4,2,64,0,4,3,84, +0,4,4,76,0,4,5,124,0,4,6,92,0,4,7,104,0,4,7,240,0,4,8,216,0,4,9,152,0,4,10,164, +0,4,11,48,0,4,11,188,0,4,12,128,0,4,13,176,0,4,14,52,0,4,14,204,0,4,15,184,0,4,16,184, +0,4,17,96,0,4,18,20,0,4,19,44,0,4,20,80,0,4,21,108,0,4,22,156,0,4,24,68,0,4,25,16, +0,4,25,224,0,4,26,144,0,4,28,72,0,4,28,248,0,4,29,124,0,4,30,96,0,4,31,84,0,4,32,32, +0,4,33,204,0,4,35,128,0,4,36,60,0,4,37,116,0,4,38,36,0,4,38,232,0,4,39,252,0,4,40,148, +0,4,41,40,0,4,43,0,0,4,43,164,0,4,45,120,0,4,46,60,0,4,46,232,0,4,47,252,0,4,49,16, +0,4,49,244,0,4,51,60,0,4,52,96,0,4,53,152,0,4,54,56,0,4,55,20,0,4,55,240,0,4,56,172, +0,4,57,188,0,4,58,180,0,4,59,160,0,4,60,64,0,4,61,0,0,4,61,172,0,4,62,56,0,4,63,144, +0,4,64,244,0,4,65,148,0,4,66,60,0,4,68,8,0,4,70,16,0,4,71,200,0,4,72,184,0,4,75,40, +0,4,76,96,0,4,77,84,0,4,77,244,0,4,78,192,0,4,79,196,0,4,81,240,0,4,83,40,0,4,84,172, +0,4,85,40,0,4,86,244,0,4,88,0,0,4,88,116,0,4,89,12,0,4,90,124,0,4,91,192,0,4,92,232, +0,4,93,216,0,4,95,80,0,4,97,40,0,4,98,80,0,4,99,232,0,4,100,132,0,4,101,108,0,4,103,232, +0,4,105,36,0,4,106,244,0,4,109,136,0,4,110,64,0,4,110,232,0,4,111,208,0,4,112,184,0,4,113,120, +0,4,114,136,0,4,115,176,0,4,116,204,0,4,117,172,0,4,118,108,0,4,119,72,0,4,120,36,0,4,121,0, +0,4,121,244,0,4,123,88,0,4,124,28,0,4,125,204,0,4,126,112,0,4,127,120,0,4,128,136,0,4,129,212, +0,4,130,100,0,4,131,100,0,4,132,16,0,4,133,4,0,4,134,56,0,4,135,116,0,4,136,180,0,4,137,76, +0,4,138,40,0,4,139,36,0,4,139,216,0,4,142,4,0,4,143,124,0,4,144,184,0,4,145,140,0,4,146,52, +0,4,149,16,0,4,149,212,0,4,151,4,0,4,152,196,0,4,153,200,0,4,154,124,0,4,155,160,0,4,156,136, +0,4,156,220,0,4,158,8,0,4,160,28,0,4,160,180,0,4,161,204,0,4,162,108,0,4,163,172,0,4,163,228, +0,4,165,92,0,4,166,156,0,4,168,104,0,4,169,96,0,4,170,60,0,4,171,116,0,4,172,172,0,4,173,48, +0,4,174,176,0,4,176,20,0,4,177,92,0,4,178,124,0,4,180,88,0,4,182,0,0,4,183,140,0,4,184,80, +0,4,185,20,0,4,186,76,0,4,187,180,0,4,188,192,0,4,190,4,0,4,191,108,0,4,192,96,0,4,193,152, +0,4,194,208,0,4,195,180,0,4,196,92,0,4,197,92,0,4,198,36,0,4,200,208,0,4,201,220,0,4,202,212, +0,4,204,120,0,4,205,128,0,4,206,56,0,4,206,240,0,4,207,252,0,4,208,168,0,4,210,80,0,4,211,148, +0,4,212,84,0,4,213,172,0,4,214,40,0,4,215,160,0,4,216,156,0,4,216,252,0,4,218,216,0,4,219,76, +0,4,219,192,0,4,220,148,0,4,221,32,0,4,222,224,0,4,223,164,0,4,224,24,0,4,224,208,0,4,225,88, +0,4,226,88,0,4,227,48,0,4,228,92,0,4,229,248,0,4,230,236,0,4,231,244,0,4,232,96,0,4,233,36, +0,4,234,124,0,4,235,164,0,4,236,212,0,4,237,196,0,4,239,172,0,4,240,240,0,4,242,124,0,4,243,248, +0,4,244,136,0,4,245,96,0,4,246,100,0,4,247,164,0,4,248,68,0,4,248,228,0,4,249,176,0,4,250,16, +0,4,250,96,0,4,251,52,0,4,252,44,0,4,252,244,0,4,253,148,0,4,254,156,0,4,255,36,0,4,255,216, +0,5,1,116,0,5,2,24,0,5,2,168,0,5,3,216,0,5,5,160,0,5,6,76,0,5,7,16,0,5,7,204, +0,5,8,108,0,5,9,96,0,5,10,224,0,5,12,40,0,5,12,212,0,5,13,156,0,5,14,104,0,5,15,76, +0,5,15,224,0,5,17,104,0,5,17,236,0,5,21,200,0,5,23,100,0,5,24,132,0,5,25,44,0,5,26,180, +0,5,27,28,0,5,27,192,0,5,29,88,0,5,30,28,0,5,31,56,0,5,32,84,0,5,33,136,0,5,34,188, +0,5,35,240,0,5,37,36,0,5,38,64,0,5,39,40,0,5,39,248,0,5,40,152,0,5,41,0,0,5,41,252, +0,5,42,244,0,5,43,248,0,5,45,12,0,5,0,0,255,192,1,128,1,192,0,20,0,24,0,28,0,32,0,36, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,39,51,7,23,7,17,19, +55,23,35,55,39,55,17,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,54,90,89, +179,218,90,90,39,89,90,179,217,89,89,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13, +1,64,134,134,58,134,134,1,12,254,186,134,134,58,134,134,254,244,0,0,0,2,0,24,255,225,0,104,1,160,0,19, +0,37,0,0,55,50,55,49,54,53,17,52,39,38,35,34,7,6,29,1,20,23,22,51,21,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,39,64,14,9,9,9,9,14,14,9,9,9,9,14,17,11,12,12,11,17,17,11,12, +12,11,17,96,9,9,13,1,1,14,9,9,9,9,14,255,14,10,9,48,12,11,17,17,11,11,11,12,16,16,12,11, +1,0,0,0,0,2,0,0,255,224,1,192,1,160,0,84,0,89,0,0,1,35,55,54,39,38,39,38,7,6,15,1, +35,55,54,39,38,39,38,7,6,15,1,35,34,7,6,21,20,23,22,59,1,7,35,34,7,6,21,20,23,22,59,1, +7,6,23,22,23,22,51,54,63,1,51,7,6,23,22,23,50,51,54,63,1,51,50,55,54,53,52,39,38,43,1,55, +51,50,55,54,53,52,39,38,35,7,35,55,51,7,1,160,58,10,1,7,7,14,13,11,10,3,11,95,10,1,7,7, +14,13,11,10,3,11,69,14,9,9,9,9,14,58,21,69,14,9,9,9,9,14,58,10,1,7,7,14,2,3,25,7, +11,95,10,1,7,7,14,2,3,25,7,11,69,14,9,9,9,9,14,58,21,69,14,9,9,9,9,14,155,95,21,95, +21,1,65,59,13,11,10,2,2,7,7,14,69,59,13,11,10,2,2,7,7,14,69,9,10,13,14,9,9,128,9,10, +13,14,8,9,59,13,11,10,3,2,2,25,69,59,13,11,10,3,2,25,69,9,9,13,14,9,9,128,9,9,13,15, +10,10,192,128,128,0,0,0,0,1,0,16,255,192,1,48,1,192,0,115,0,0,19,50,23,49,22,29,1,50,51,50, +51,22,23,22,23,22,23,22,7,6,7,6,39,38,39,38,39,34,35,38,7,6,7,6,23,22,23,22,31,1,22,23, +22,23,22,23,22,7,6,7,6,7,6,7,21,20,7,6,35,34,39,38,61,1,48,49,38,21,49,38,39,38,39,38, +39,38,55,54,55,54,23,22,23,22,23,22,55,54,55,54,39,38,39,38,47,1,38,39,38,39,38,39,38,55,54,55, +54,55,54,55,53,52,55,54,51,49,160,14,9,9,2,1,1,1,9,17,18,11,12,7,7,3,4,11,11,13,7,14, +14,10,2,2,49,29,26,2,2,3,3,10,25,48,3,22,24,23,20,22,14,12,6,6,17,18,25,20,24,9,9,14, +14,9,9,1,20,25,26,21,12,5,4,5,6,11,12,12,17,22,21,16,49,27,25,2,2,3,3,10,25,48,3,22, +24,23,20,22,14,12,6,6,18,19,25,20,22,9,9,14,1,192,9,9,14,36,2,3,3,2,4,11,11,13,13,7, +6,3,2,2,2,2,7,12,10,18,15,5,6,8,14,12,1,5,9,8,12,14,26,27,31,29,19,20,10,8,3,33, +14,9,9,9,9,14,35,1,1,3,7,7,9,6,12,12,13,12,5,4,5,7,6,6,3,6,12,10,18,16,5,6, +7,15,12,1,5,9,8,12,14,26,27,32,29,19,19,9,8,2,35,14,9,9,0,0,0,3,0,0,0,0,1,128, +1,128,0,19,0,37,0,55,0,0,1,38,35,49,34,7,1,6,21,20,23,22,51,50,55,1,54,53,52,39,5,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,1,119,10,13,13,10,254,192,9,9,10,13,13,10,1,64,9,9,254,201,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,0,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,119,9,9,254,192,10,13, +13,10,9,9,1,64,10,13,13,10,119,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,0,1,0,25,255,224,1,165,1,160,0,60,0,0,37,6,35,34,47,1, +21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,55,54,63,1,39,38,39,38,55,54,23,22,31,1,53,52, +55,54,51,50,23,22,29,1,55,54,55,54,23,22,7,6,15,1,23,22,23,22,7,1,161,10,18,8,8,117,9,9, +13,13,10,10,118,8,8,18,10,6,3,3,12,117,117,12,3,4,6,13,20,6,6,118,9,9,14,14,9,9,118,6, +6,21,10,7,4,3,12,117,118,12,3,3,7,80,16,4,69,137,14,9,9,9,9,14,137,69,4,16,12,12,13,7, +68,68,7,13,12,12,18,2,1,3,69,137,14,9,9,9,9,14,137,69,3,1,2,18,12,12,13,7,68,68,7,13, +12,12,0,0,0,1,0,16,255,240,1,176,1,144,0,41,0,0,37,20,7,49,6,43,1,21,20,7,6,35,34,39, +38,61,1,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,50,23,22,29,1,51,50,23,22,21,1,176,9,9, +14,144,9,9,14,14,9,9,144,14,9,9,9,9,14,144,9,9,14,14,9,9,144,14,9,9,192,14,9,9,144,14, +9,9,9,9,14,144,9,9,14,14,9,9,144,14,9,9,9,9,14,144,9,9,14,0,0,2,0,0,255,225,1,64, +1,160,0,19,0,39,0,0,19,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,19,6,7,49, +6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,21,160,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45, +68,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,1,160,2,45,45,68,127,68,45,45,2,2,45,45, +68,127,68,45,45,2,254,224,41,27,27,1,1,27,27,41,128,41,27,27,1,1,27,27,41,128,0,0,0,1,0,0, +255,224,1,0,1,160,0,36,0,0,37,20,7,49,6,43,1,34,39,38,53,52,55,54,59,1,17,7,6,39,38,39, +38,55,54,63,1,54,23,22,23,17,51,50,23,22,21,1,0,9,9,14,192,14,9,9,9,9,14,64,46,12,12,13, +8,7,3,2,11,96,16,17,16,1,64,14,9,9,0,14,9,9,9,9,14,14,9,9,1,36,31,7,3,2,11,12, +12,13,8,64,10,9,9,19,254,160,9,9,14,0,0,0,0,1,0,0,255,224,1,64,1,159,0,43,0,0,37,20, +7,49,6,35,33,38,39,38,63,1,54,55,54,39,38,39,38,15,1,6,39,38,39,38,55,54,63,1,54,23,22,23, +22,7,6,15,1,51,50,23,22,21,1,64,9,9,14,255,0,21,9,7,15,193,24,2,1,21,23,36,35,26,35,11, +13,12,10,9,1,1,9,35,45,64,63,41,37,2,3,42,136,176,14,9,9,0,14,9,9,1,19,20,15,185,24,32, +31,27,27,2,1,24,32,9,1,1,9,11,13,12,10,31,42,2,5,47,46,57,56,42,130,9,9,14,0,1,0,0, +255,224,1,64,1,160,0,55,0,0,37,6,7,49,6,7,35,34,39,38,39,38,55,54,55,54,23,22,23,22,23,51, +54,55,54,55,38,39,38,39,35,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,22,23,22,15,1,51,22,23, +22,23,1,64,1,39,38,58,80,36,27,27,11,4,5,6,13,13,11,12,4,11,30,80,31,20,20,1,1,20,20,31, +104,21,9,7,15,132,158,14,9,9,9,9,14,240,21,9,7,15,132,22,57,39,38,2,104,58,38,39,1,20,20,33, +13,12,11,5,4,6,6,12,28,2,1,20,20,31,31,20,20,1,1,19,21,15,120,9,9,14,14,9,9,1,19,21, +15,120,1,39,38,58,0,0,0,1,0,0,255,224,1,128,1,159,0,47,0,0,37,20,7,49,6,43,1,21,20,7, +6,35,34,39,38,61,1,35,34,39,38,55,19,54,55,54,23,22,23,22,15,1,51,53,52,55,54,51,50,23,22,29, +1,51,22,23,22,21,1,128,9,9,14,32,9,9,14,14,9,9,224,17,10,9,7,128,6,12,12,13,12,4,4,5, +106,173,9,9,14,14,9,9,32,14,9,9,114,14,9,9,82,14,9,9,9,9,14,82,15,15,15,1,15,12,4,4, +5,6,12,12,13,224,142,14,9,9,9,9,14,142,1,9,9,13,0,0,0,1,0,0,255,224,1,64,1,160,0,53, +0,0,37,6,7,49,6,7,35,34,39,38,39,38,55,54,55,54,23,22,23,22,23,51,54,55,54,55,38,39,38,39, +35,34,39,38,63,1,54,55,51,50,23,22,21,20,7,6,43,1,7,51,22,23,22,23,1,64,1,39,38,57,80,36, +28,28,11,4,5,6,13,13,11,12,4,12,31,80,30,20,20,1,1,20,20,30,153,15,10,9,3,32,6,25,192,14, +9,9,9,9,14,165,21,115,57,38,39,1,103,57,38,39,1,20,20,34,13,12,11,5,4,6,6,13,28,2,1,20, +20,30,31,20,20,1,11,12,14,178,24,2,9,9,14,14,9,9,113,2,38,38,58,0,0,2,0,0,255,224,1,64, +1,160,0,29,0,47,0,0,19,55,54,39,38,39,38,35,34,7,6,7,6,7,6,7,6,21,22,23,22,23,54,55, +54,55,38,39,38,39,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,168,64,9,1,1,10,10,11, +14,10,33,26,48,28,27,11,11,2,45,45,68,68,45,45,2,2,42,43,65,8,41,27,27,1,1,27,27,41,41,27, +27,1,1,27,27,41,1,31,76,11,13,12,9,8,11,39,30,55,35,35,26,26,31,68,45,45,2,2,45,45,68,66, +44,45,4,255,1,27,27,41,41,26,27,1,1,27,27,40,40,28,27,1,0,1,0,0,255,224,1,64,1,160,0,24, +0,0,1,3,6,35,34,39,38,39,38,55,19,35,34,39,38,53,52,55,54,51,33,22,23,22,7,1,60,224,10,18, +8,8,12,3,3,6,196,200,14,9,9,9,9,14,1,0,18,10,8,8,1,112,254,128,16,4,7,13,12,12,1,80, +9,9,14,14,9,9,1,15,16,16,0,0,0,3,0,0,255,224,1,64,1,160,0,30,0,49,0,68,0,0,37,54, +55,38,39,38,39,35,6,7,6,7,22,23,6,7,6,21,22,23,22,23,51,54,55,54,55,52,39,38,47,1,51,22, +23,22,23,6,7,6,7,35,38,39,38,39,54,55,54,55,19,35,38,39,38,39,54,55,54,55,51,22,23,22,23,6, +7,6,7,1,12,35,1,1,37,36,54,32,54,36,37,1,1,35,24,14,14,1,37,36,54,64,54,36,37,1,14,14, +24,124,32,27,18,18,1,1,18,18,27,32,27,18,18,1,1,18,18,27,48,64,27,18,18,1,1,18,18,27,64,27, +18,18,1,1,18,18,27,199,36,53,54,36,37,1,1,37,36,54,53,36,18,27,26,32,54,36,37,1,1,37,36,54, +32,26,27,18,153,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,192,1,18,18,27,27,18,18,1,1, +18,18,27,27,18,18,1,0,0,2,0,0,255,224,1,64,1,160,0,30,0,48,0,0,19,6,7,49,6,7,22,23, +22,23,7,6,23,22,23,22,51,50,55,54,55,54,55,54,55,54,53,38,39,38,39,17,38,39,49,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,160,68,45,45,2,2,42,43,65,64,9,1,1,10,10,11,14,10,33,26,49,27,27, +11,11,2,45,45,68,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,160,2,45,45,68,66,44,45,4, +76,11,13,12,9,8,11,39,30,55,35,35,26,26,31,68,45,45,2,255,0,1,27,27,40,40,28,27,1,1,27,27, +41,41,26,27,1,0,0,0,0,1,0,0,0,0,1,127,1,127,0,24,0,0,37,34,39,37,38,39,54,55,37,54, +23,22,23,22,7,6,7,13,1,22,23,22,7,6,35,1,95,7,7,254,192,16,1,1,17,1,64,12,12,12,7,5, +4,4,12,254,250,1,6,12,4,4,5,10,20,0,3,160,10,19,19,10,160,5,4,4,12,12,12,12,7,131,131,7, +12,12,12,18,0,2,0,16,0,65,1,176,1,63,0,18,0,37,0,0,19,33,50,55,54,53,52,39,38,35,33,34, +7,6,21,20,23,22,51,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,48,1,96,14,9,9, +9,9,14,254,160,14,9,9,9,9,14,1,96,254,160,14,9,9,9,9,14,1,96,14,9,9,9,9,14,1,0,9, +9,14,14,8,9,9,9,13,13,9,10,128,9,9,13,13,9,10,9,9,14,13,9,9,0,1,0,0,0,0,1,128, +1,127,0,24,0,0,55,34,39,38,55,54,55,45,1,38,39,38,55,54,55,54,23,5,22,23,6,7,5,6,35,32, +19,10,5,4,4,12,1,6,254,250,12,4,4,5,7,12,12,12,1,64,17,1,1,17,254,192,7,7,0,18,12,12, +12,7,131,131,7,12,12,12,12,4,4,5,160,10,19,19,10,160,3,0,0,2,0,0,255,225,1,64,1,160,0,46, +0,64,0,0,19,35,6,7,6,7,20,23,22,51,50,55,54,53,52,55,54,59,1,22,23,22,23,6,15,1,6,29, +1,20,23,22,51,50,55,54,61,1,55,54,55,54,53,38,39,38,39,3,34,7,49,6,21,20,23,22,51,50,55,54, +53,52,39,38,39,204,108,41,27,27,1,9,9,14,14,9,9,9,9,14,108,22,15,14,1,1,29,98,16,9,9,14, +14,9,9,80,30,17,17,1,33,33,49,60,17,11,12,12,11,17,17,11,12,12,11,17,1,160,1,27,27,41,14,8, +9,9,9,13,14,9,9,1,14,15,22,31,16,57,10,18,40,14,9,9,9,9,14,22,47,15,27,28,33,49,33,33, +1,254,144,12,11,17,17,11,11,11,12,16,16,12,11,1,0,2,0,16,255,211,1,239,1,175,0,72,0,90,0,0, +19,6,7,49,6,7,6,23,22,23,22,23,22,55,54,53,49,38,39,38,39,38,39,54,55,54,23,22,23,22,23,21, +20,7,6,35,34,39,38,61,1,38,39,35,6,7,38,7,6,7,6,7,6,23,22,23,54,55,22,23,22,55,54,55, +54,61,1,38,39,38,39,38,7,19,34,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,35,208,71,51,50,15, +13,23,23,50,50,66,15,10,11,2,25,64,42,42,1,2,55,56,80,70,44,44,1,12,11,17,17,11,12,1,15,32, +12,3,38,48,30,19,20,5,5,32,32,52,40,30,18,29,28,34,35,21,20,1,39,40,65,64,78,31,20,14,13,1, +1,13,14,20,20,14,14,14,13,21,1,171,15,50,51,71,71,61,61,41,41,10,2,10,9,15,26,5,12,47,48,68, +79,51,50,5,9,51,52,71,16,17,12,11,11,12,17,120,14,2,1,11,20,15,11,23,24,31,54,36,37,1,1,23, +23,11,11,8,9,29,29,36,21,75,59,58,29,28,14,254,229,14,13,21,20,14,13,1,1,13,14,20,21,13,14,0, +0,2,0,0,255,224,1,128,1,160,0,25,0,29,0,0,37,3,38,39,6,7,3,6,23,22,23,22,55,54,63,1, +51,23,22,23,50,55,54,55,54,39,37,55,23,35,1,126,160,9,21,21,8,160,5,4,5,13,12,12,12,6,31,198, +31,10,20,6,6,13,5,4,4,254,249,73,72,145,12,1,128,19,1,1,19,254,128,12,12,12,6,4,4,5,13,76, +76,19,1,2,6,12,12,12,116,173,173,0,0,3,0,0,255,224,1,64,1,160,0,25,0,37,0,49,0,0,37,54, +55,38,39,38,39,35,34,7,6,21,17,20,23,22,59,1,54,55,54,55,52,39,38,47,1,51,22,23,22,23,6,7, +6,7,35,53,19,35,53,51,22,23,22,23,6,7,6,7,1,1,30,1,1,37,36,54,128,14,9,9,9,9,14,160, +54,36,37,1,17,17,29,193,96,27,18,18,1,1,18,18,27,96,128,128,128,27,18,18,1,1,18,18,27,206,34,48, +54,36,37,1,9,9,14,254,128,14,9,9,1,37,36,54,35,29,28,18,146,1,18,18,27,27,18,18,1,128,254,192, +128,1,18,18,27,27,18,18,1,0,0,0,0,1,255,255,255,224,1,127,1,159,0,53,0,0,37,22,23,49,22,21, +20,7,6,7,6,7,38,39,38,39,38,53,52,55,54,55,54,55,22,23,22,23,22,21,20,7,6,7,38,39,38,39, +38,39,6,7,6,7,22,23,22,23,54,55,54,55,54,55,1,96,17,7,7,21,21,36,37,49,69,49,49,26,27,26, +26,49,49,70,50,36,37,21,20,7,8,17,16,17,14,23,22,40,74,41,40,1,1,40,40,75,40,23,23,14,17,16, +88,1,10,11,10,12,21,21,16,17,1,1,33,34,51,51,54,53,51,51,33,34,1,1,17,17,20,21,12,10,11,10, +1,1,17,13,12,12,1,3,49,48,59,59,49,49,3,1,12,12,13,17,1,0,0,0,0,2,0,0,255,224,1,128, +1,160,0,23,0,35,0,0,19,35,34,7,6,21,17,20,23,22,59,1,54,55,54,55,54,55,38,39,38,39,38,39, +17,35,17,51,22,23,22,23,6,7,6,7,160,128,14,9,9,9,9,14,128,62,51,50,30,30,1,1,30,30,50,51, +62,96,96,68,45,45,2,2,45,45,68,1,160,9,9,14,254,128,14,9,9,1,30,30,50,51,62,62,51,50,30,30, +1,254,128,1,64,2,45,45,67,67,46,46,2,0,0,0,0,1,0,0,255,224,1,64,1,160,0,42,0,0,37,20, +7,49,6,35,33,34,39,38,53,17,52,55,54,51,33,50,23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7, +6,43,1,21,51,50,23,22,21,1,64,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9,9,9,9,14,224,160, +14,9,9,9,9,14,160,224,14,9,9,0,14,9,9,9,9,14,1,128,14,9,9,9,9,14,14,9,9,128,9,9, +14,14,9,9,128,9,9,14,0,1,0,0,255,225,1,64,1,160,0,36,0,0,1,20,7,49,6,43,1,21,51,50, +23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,53,17,52,55,54,51,33,50,23,22,21,1,64,9,9,14, +224,160,14,9,9,9,9,14,160,9,9,14,14,9,9,9,9,14,1,0,14,9,9,1,128,14,9,9,128,9,9,13, +13,9,10,160,14,9,9,9,9,14,1,128,13,9,9,9,9,14,0,0,0,1,0,1,255,226,1,192,1,160,0,64, +0,0,37,6,7,49,6,7,49,6,35,38,39,38,39,38,53,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6, +35,38,39,38,39,38,39,6,7,6,7,6,23,22,23,22,23,54,55,54,55,35,34,39,38,53,52,55,54,59,1,50, +23,22,21,1,192,1,34,33,51,52,54,67,49,50,28,28,1,30,30,50,50,62,43,38,38,24,24,1,1,9,9,13, +16,17,14,24,24,41,67,45,45,2,1,13,12,35,35,65,61,43,43,11,134,14,9,9,9,9,14,168,14,9,9,192, +72,49,50,26,25,1,31,30,51,50,59,63,50,51,30,29,1,1,15,14,21,20,17,14,9,9,1,16,14,12,12,1, +2,45,44,69,19,37,38,31,32,2,2,35,35,55,9,9,14,14,8,9,8,9,14,0,0,1,0,0,255,224,1,128, +1,160,0,40,0,0,1,17,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,53,17,52,55,54,51, +50,23,22,29,1,33,53,52,55,54,51,50,23,22,21,1,128,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9, +9,14,14,9,9,1,0,9,9,14,14,9,9,1,128,254,128,14,9,9,9,9,14,192,192,14,9,9,9,9,14,1, +128,14,9,9,9,9,14,128,128,14,9,9,9,9,14,0,0,1,0,0,255,224,1,64,1,160,0,41,0,0,37,20, +7,49,6,35,33,34,39,38,53,52,55,54,59,1,17,35,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +43,1,17,51,50,23,22,21,1,64,9,9,14,255,0,14,9,9,9,9,14,96,96,14,9,9,9,9,14,1,0,14, +9,9,9,9,14,96,96,14,9,9,0,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,14, +9,9,254,192,9,9,14,0,0,1,0,0,255,224,1,64,1,160,0,36,0,0,1,17,6,7,6,7,38,39,38,39, +53,52,55,54,51,50,23,22,29,1,22,23,22,23,54,55,54,55,17,52,55,54,51,50,23,22,21,1,64,2,45,45, +68,68,45,45,2,9,9,14,14,9,9,1,27,27,41,41,27,27,1,9,9,14,14,9,9,1,128,254,253,67,44,44, +2,2,44,44,67,35,14,9,9,9,9,14,35,40,26,26,1,1,26,26,40,1,3,14,9,9,9,9,14,0,0,0, +0,1,0,0,255,224,1,64,1,160,0,41,0,0,37,22,7,49,6,7,6,35,34,47,1,7,21,20,7,6,35,34, +39,38,53,17,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,15,1,23,1,58,8,3,2,11,8,10, +16,10,134,64,9,9,14,14,9,9,9,9,14,14,9,9,201,10,13,12,10,10,9,137,140,18,11,13,12,8,6,14, +193,66,109,14,9,9,9,9,14,1,128,14,9,9,9,9,14,183,205,10,9,10,13,12,10,141,203,0,0,1,0,32, +255,224,1,64,1,160,0,25,0,0,37,20,7,49,6,43,1,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51, +50,23,22,21,1,64,9,9,14,224,14,9,9,9,9,14,14,9,9,192,14,9,9,0,14,9,9,9,9,14,1,128, +14,9,9,9,9,14,254,160,9,9,14,0,0,1,0,0,255,224,1,192,1,160,0,36,0,0,1,17,20,7,6,35, +34,39,38,53,17,7,6,35,34,47,1,17,20,7,6,35,34,39,38,53,17,54,55,54,31,1,55,54,23,22,23,1, +192,9,9,14,14,9,9,133,10,17,17,10,133,9,9,14,14,9,9,1,22,22,14,165,165,14,22,22,1,1,128,254, +128,14,9,9,9,9,14,1,22,200,13,13,200,254,234,14,9,9,9,9,14,1,128,23,8,5,18,248,248,18,5,8, +23,0,0,0,0,1,0,0,255,224,1,128,1,160,0,32,0,0,1,17,6,7,6,35,34,39,1,17,20,7,6,35, +34,39,38,53,17,54,55,54,23,1,17,52,55,54,51,50,23,22,21,1,128,1,20,5,6,15,10,254,249,9,9,14, +14,9,9,1,20,21,15,1,7,9,9,14,14,9,9,1,128,254,128,22,8,2,12,1,60,254,216,14,9,9,9,9, +14,1,128,22,8,6,16,254,196,1,40,14,9,9,9,9,14,0,0,0,0,2,0,0,255,224,1,192,1,160,0,26, +0,44,0,0,19,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17, +38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,224,62,51,50,30,30,1,1,30,30,50,51,62,62,51, +50,30,30,1,1,30,30,50,51,62,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45,68,1,160,1,30,30,50, +51,62,62,51,50,30,30,1,1,30,30,50,51,62,62,51,50,30,30,1,254,128,2,45,45,68,68,45,44,2,2,45, +45,67,67,46,45,2,0,0,0,2,0,0,255,224,1,64,1,160,0,24,0,36,0,0,19,35,34,7,6,21,17,20, +23,22,51,50,55,54,61,1,51,54,55,54,55,38,39,38,39,17,35,53,51,22,23,22,23,6,7,6,7,160,128,14, +9,9,9,9,14,14,9,9,96,68,45,45,2,2,45,45,68,96,96,41,27,27,1,1,27,27,41,1,160,9,9,14, +254,128,14,9,9,9,9,14,96,2,45,45,67,67,46,46,2,255,0,192,1,27,27,41,41,27,27,1,0,2,0,0, +255,192,1,192,1,160,0,32,0,60,0,0,37,54,55,38,39,38,39,38,39,6,7,6,7,6,7,22,23,22,23,22, +23,54,55,23,22,51,54,55,54,53,52,47,1,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,39,38,35, +6,7,6,21,20,31,1,6,7,1,137,53,2,1,30,29,51,50,62,62,51,51,30,30,1,1,30,29,51,50,62,68, +53,47,10,14,16,8,8,7,47,169,68,45,45,2,2,45,45,68,68,45,45,2,1,32,70,11,14,16,8,8,7,72, +35,44,45,61,86,62,51,50,30,30,1,1,30,30,50,51,62,62,51,50,30,30,1,1,35,57,11,1,10,10,11,11, +9,57,13,2,45,45,68,68,45,44,2,2,45,45,67,55,41,84,12,1,10,10,11,11,9,86,21,1,0,2,0,0, +255,224,1,64,1,160,0,35,0,47,0,0,55,54,55,49,54,55,38,39,38,39,35,34,7,6,21,17,20,23,22,51, +50,55,54,61,1,51,23,22,51,50,55,54,55,54,47,2,51,22,23,22,23,6,7,6,7,35,53,229,40,25,25,1, +2,40,41,61,144,14,9,9,9,9,14,14,9,9,93,105,10,16,10,9,10,3,2,8,85,165,112,34,23,22,1,1, +22,23,34,112,138,17,35,36,46,61,41,40,2,9,9,14,254,128,14,9,9,9,9,14,128,147,13,6,8,13,12,12, +119,214,1,22,23,34,34,22,22,1,159,0,0,1,0,31,255,224,1,96,1,160,0,62,0,0,37,6,7,6,39,38, +39,38,39,38,39,38,55,54,55,54,23,22,23,22,55,54,55,54,39,38,39,38,39,38,39,38,55,54,55,54,23,22, +23,22,7,6,7,6,39,38,7,6,7,6,7,6,23,22,23,48,49,22,23,22,23,22,7,1,94,10,47,38,46,47, +43,42,25,12,5,5,4,6,12,11,13,59,50,50,27,21,4,6,23,24,63,36,38,37,23,23,8,9,42,69,138,13, +6,7,4,3,11,12,13,67,37,37,14,19,4,6,23,24,63,36,38,37,23,23,8,69,56,26,20,1,1,12,11,11, +6,11,12,13,12,5,5,5,23,6,5,15,11,26,30,17,17,17,10,16,15,31,30,52,49,28,44,36,4,11,11,14, +13,6,6,3,17,3,3,11,12,22,31,16,17,17,10,16,16,30,30,52,0,1,0,0,255,224,1,128,1,160,0,30, +0,0,1,20,7,49,6,43,1,17,20,7,6,35,34,39,38,53,17,35,34,39,38,53,52,55,54,51,33,50,23,22, +21,1,128,9,9,14,128,9,9,14,14,9,9,128,14,9,9,9,9,14,1,64,14,9,9,1,128,14,9,9,254,160, +14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,0,0,0,0,1,0,0,255,224,1,128,1,160,0,36, +0,0,1,21,6,7,6,7,38,39,38,39,53,52,55,54,51,50,23,22,29,1,22,23,22,23,54,55,54,55,53,52, +55,54,51,50,23,22,21,1,128,2,54,55,81,81,55,54,2,9,9,14,14,9,9,1,37,36,54,54,36,37,1,9, +9,14,14,9,9,1,128,226,80,54,54,2,2,54,54,80,226,14,9,9,9,9,14,226,53,36,36,1,1,36,36,53, +226,14,9,9,9,9,14,0,0,1,0,0,255,224,1,128,1,160,0,24,0,0,1,3,6,7,38,39,3,38,55,54, +55,54,23,22,23,27,1,54,55,54,23,22,23,22,7,1,126,160,9,21,21,9,160,4,4,5,13,12,12,12,6,130, +131,5,12,12,12,13,5,4,4,1,116,254,128,19,1,1,19,1,128,12,12,12,6,4,4,5,13,254,199,1,57,13, +5,4,4,6,12,12,12,0,0,1,0,0,255,224,2,63,1,160,0,38,0,0,1,3,6,7,48,35,38,39,11,1, +6,7,34,39,3,38,55,54,55,54,23,22,23,27,1,54,55,22,23,27,1,54,55,54,23,22,23,22,7,2,61,144, +8,22,1,22,8,80,81,8,22,22,9,144,4,5,5,13,13,11,12,5,110,85,8,23,23,8,85,110,5,12,11,13, +13,5,5,5,1,117,254,128,20,1,2,21,1,23,254,233,21,2,21,1,128,13,11,12,5,4,5,5,13,254,219,1, +36,20,2,1,22,254,220,1,37,13,5,5,4,4,12,11,13,0,0,0,0,1,0,0,255,224,1,128,1,160,0,41, +0,0,37,22,7,49,6,7,6,35,34,47,1,7,6,35,34,39,38,39,38,63,1,39,38,55,54,55,54,23,22,31, +1,55,54,55,54,23,22,23,22,15,1,23,1,121,8,1,1,10,10,11,14,11,135,135,11,14,11,9,11,1,1,8, +143,143,8,1,1,11,10,13,13,9,135,135,9,13,13,10,11,1,1,8,143,143,20,10,13,13,9,7,12,163,163,11, +7,9,13,13,10,172,170,11,13,13,9,8,1,1,11,162,162,11,1,1,8,9,13,13,10,172,172,0,0,1,0,0, +255,225,1,127,1,160,0,30,0,0,1,7,21,20,7,6,35,34,39,38,61,1,39,38,55,54,55,54,23,22,31,1, +55,54,55,54,23,22,23,22,7,1,122,154,9,9,14,14,9,9,154,8,2,3,10,12,12,13,8,134,133,8,13,12, +12,11,2,3,8,1,109,215,150,14,8,9,9,8,14,150,215,12,12,13,8,8,2,3,10,187,187,11,2,2,7,9, +13,12,12,0,0,1,0,0,255,224,1,128,1,160,0,31,0,0,37,20,7,49,6,35,33,38,39,38,55,1,35,34, +39,38,53,52,55,54,51,33,22,23,22,7,1,51,50,23,22,21,1,128,9,9,14,254,192,20,9,8,12,1,21,252, +14,9,9,9,9,14,1,64,20,9,8,12,254,235,252,14,9,9,0,14,9,9,1,17,19,15,1,76,9,9,14,14, +9,9,1,17,19,15,254,180,9,9,14,0,0,2,0,0,0,0,2,0,1,128,0,42,0,64,0,0,37,35,38,39, +53,39,7,21,6,7,35,6,7,21,22,23,51,22,23,22,51,50,55,54,55,51,50,23,22,21,20,23,22,59,1,50, +55,54,53,38,39,38,39,37,55,23,50,55,53,38,35,7,53,38,39,35,6,7,21,39,34,7,21,22,51,1,96,39, +24,33,32,32,33,24,119,15,1,1,15,93,16,30,30,39,39,30,30,16,13,14,9,9,9,9,14,64,14,9,9,2, +45,45,68,254,242,142,142,16,2,2,16,110,1,15,32,15,1,110,16,2,2,16,192,20,8,47,4,4,47,8,20,1, +15,96,15,1,29,17,18,18,17,29,9,9,14,13,10,9,9,9,14,68,45,45,2,96,15,15,17,30,17,12,28,15, +1,1,15,28,12,17,30,17,0,3,0,0,255,192,2,0,1,192,0,17,0,60,0,82,0,0,5,20,23,49,22,51, +50,55,54,53,38,39,38,39,6,7,6,7,3,35,38,39,53,39,7,21,6,7,35,6,7,21,22,23,51,22,23,22, +51,50,55,54,55,51,50,23,22,21,20,23,22,59,1,50,55,54,53,38,39,38,39,37,55,23,50,55,53,38,35,7, +53,38,39,35,6,7,21,39,34,7,21,22,51,1,160,9,9,14,14,9,9,2,14,14,2,2,14,14,2,64,39,24, +33,32,32,33,24,119,15,1,1,15,93,16,30,30,39,39,30,30,16,13,14,9,9,9,9,14,64,14,9,9,2,45, +45,68,254,242,142,142,16,2,2,16,110,1,15,32,15,1,110,16,2,2,16,32,14,9,9,9,9,14,16,23,23,2, +2,23,23,16,1,32,20,8,47,4,4,47,8,20,1,15,96,15,1,29,17,18,18,17,29,9,9,14,13,10,9,9, +9,14,68,45,45,2,96,15,15,17,30,17,12,28,15,1,1,15,28,12,17,30,17,0,0,2,0,0,255,192,2,64, +1,192,0,45,0,58,0,0,37,6,7,49,6,7,35,23,6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52, +55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,49,37,6,7,21,22,23,51,54,55,53, +38,39,35,2,64,1,9,9,13,32,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10, +106,9,9,14,32,14,9,9,53,12,1,254,184,22,2,2,22,80,22,2,2,22,80,192,13,9,9,1,160,27,18,18, +1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9,14,121,47,10,14,64,2,22,80, +22,2,2,22,80,22,2,0,0,5,0,0,255,192,2,64,1,192,0,24,0,37,0,56,0,74,0,91,0,0,1,54, +51,49,50,31,1,22,7,6,7,35,21,6,7,6,7,35,38,39,38,39,54,63,1,7,6,7,21,22,23,51,54,55, +53,38,39,35,3,6,7,38,39,38,39,38,39,38,39,54,55,22,23,22,23,22,23,37,52,55,49,54,51,50,23,22, +21,20,7,6,35,34,39,38,61,1,54,55,22,23,22,23,6,7,38,39,38,39,38,39,38,39,1,58,10,12,12,10, +208,15,7,9,21,32,1,13,14,20,168,18,53,53,75,2,7,208,10,15,2,2,15,64,15,1,1,15,64,48,2,22, +22,2,2,52,52,78,22,2,2,22,65,52,52,31,31,1,255,0,9,9,14,14,9,9,9,9,14,14,9,9,2,22, +58,38,39,1,2,22,22,2,1,25,25,37,22,2,1,184,8,8,193,15,20,19,1,112,20,14,13,1,75,53,54,18, +9,6,193,184,1,15,64,15,1,1,15,64,15,1,254,216,22,2,2,22,78,52,52,2,2,22,22,2,1,31,31,52, +52,65,8,14,9,9,9,9,14,14,9,9,9,9,14,104,22,2,1,39,38,58,22,2,2,22,37,25,25,1,2,22, +0,4,0,0,255,192,2,0,1,192,0,22,0,46,0,74,0,110,0,0,55,53,38,39,6,15,1,6,7,6,23,22, +23,22,51,50,55,54,55,54,39,38,39,55,38,39,49,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55, +38,39,53,3,6,7,49,6,35,34,39,38,39,38,55,54,55,53,54,55,54,55,22,23,22,29,1,22,23,22,7,37, +38,7,49,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,38,7,6,7,6,31,1,22,51,50,63,1,54, +39,38,39,159,1,14,14,1,1,17,8,9,3,3,13,13,18,18,13,13,3,3,9,9,17,96,1,31,31,48,48,31, +32,1,31,1,2,40,41,61,61,40,41,1,1,31,35,9,21,20,26,26,21,20,9,8,8,7,21,1,13,14,20,20, +13,14,22,7,8,8,1,23,11,12,13,9,6,9,9,14,14,9,9,8,9,12,13,11,10,2,1,8,64,11,15,15, +10,64,8,1,2,11,125,19,15,2,1,15,20,6,15,15,17,18,11,11,11,11,18,17,15,15,6,211,48,31,32,1, +1,32,31,48,167,37,52,61,41,40,2,2,40,41,61,52,37,167,254,231,25,15,14,15,15,24,25,24,24,16,192,20, +14,13,1,1,13,14,20,192,16,24,24,25,50,8,1,2,10,9,1,37,14,9,9,9,9,14,254,219,9,10,2,1, +8,9,12,13,11,80,12,12,80,11,13,12,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,22,0,46,0,74, +0,109,0,0,55,53,38,39,6,7,21,6,7,6,23,22,23,22,51,50,55,54,55,54,39,38,39,55,38,39,49,38, +39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,53,3,6,7,49,6,35,34,39,38,39,38,55,54, +55,53,54,55,54,55,22,23,22,29,1,22,23,22,7,1,39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,17, +20,23,22,51,50,55,54,53,17,23,22,51,50,55,54,55,54,39,159,1,14,15,1,17,8,9,3,3,13,13,18,18, +13,13,3,3,9,9,17,96,1,31,31,48,48,31,32,1,31,1,2,40,41,61,61,40,41,1,1,31,35,9,21,20, +26,26,21,20,9,8,8,7,21,1,13,14,20,20,13,14,22,7,8,8,1,28,64,10,15,15,10,64,8,1,2,10, +11,13,12,9,8,9,9,14,14,9,9,7,10,15,11,9,10,2,1,9,125,211,15,1,1,15,211,6,15,15,17,18, +11,11,11,11,18,17,15,15,6,211,48,31,32,1,1,32,31,48,167,37,52,61,41,40,2,2,40,41,61,52,37,167, +254,231,25,15,14,15,15,24,25,24,24,16,192,20,14,13,1,1,13,14,20,192,16,24,24,25,1,13,80,11,11,80, +11,13,12,9,8,1,2,10,9,254,219,14,9,9,9,9,14,1,37,9,12,7,9,12,13,11,0,0,0,8,0,0, +255,224,2,128,1,160,0,35,0,45,0,56,0,65,0,76,0,87,0,105,0,123,0,0,1,22,23,49,22,23,21,51, +50,23,22,21,20,7,6,35,33,38,39,38,39,6,7,6,7,35,38,39,38,39,17,54,55,54,55,33,5,21,54,55, +53,38,39,6,7,49,23,50,23,53,38,39,6,7,21,54,51,23,22,23,53,38,39,6,7,21,55,21,22,23,54,55, +53,38,39,6,7,51,38,39,6,7,21,22,23,54,55,53,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,240,20,14,13,1,64,14,9,9,9,9, +14,254,191,7,30,31,43,43,31,30,7,17,20,14,13,1,1,13,14,20,1,192,254,80,15,17,1,15,15,1,112,8, +8,1,15,15,1,8,8,80,17,15,1,15,15,1,96,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1, +254,128,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,14,9,9,9,9,14,14,9,9,9,9,14,1, +160,1,13,14,20,240,9,9,14,14,9,9,42,26,27,1,1,27,26,42,1,13,14,20,1,0,20,14,13,1,80,152, +12,9,131,15,1,1,15,112,1,113,15,1,1,15,113,1,19,9,12,152,15,1,1,15,131,131,192,15,1,1,15,192, +15,1,1,15,15,1,1,15,192,15,1,1,15,192,254,224,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +32,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,193,2,127,1,191,0,119,0,137,0,253, +1,15,1,24,0,0,37,54,39,38,15,1,38,39,55,54,39,38,39,6,15,1,34,7,6,7,39,38,39,38,7,6, +31,1,6,7,6,7,38,39,38,35,34,7,6,31,1,6,7,6,7,48,49,39,38,7,6,31,1,6,7,6,7,39, +38,7,6,31,1,6,23,7,6,23,22,63,1,22,23,7,6,23,22,63,1,50,55,54,55,48,49,23,22,55,54,47, +1,54,55,23,22,55,54,47,1,54,55,23,22,55,54,47,1,54,55,23,22,55,54,47,1,54,55,54,39,55,7,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,54,47,1,54,55,54,55,23,22,55,54,47,1,54,39, +55,54,39,38,15,1,38,39,55,54,39,38,15,1,34,7,6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1, +6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1,6,7,6,23,7,6,23,22,63,1,22,23,7,6,23,22, +23,54,63,1,50,55,54,55,23,22,23,22,55,54,47,1,54,55,54,55,22,23,22,51,50,55,54,47,1,54,55,54, +51,23,22,55,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,38,39,54,55,22,23,6,7,2, +115,15,3,7,15,11,13,24,3,2,4,4,11,13,4,3,6,13,13,17,8,4,7,7,8,10,10,9,10,2,1,3, +2,2,7,5,11,5,6,14,9,12,10,11,2,4,8,15,15,6,4,6,6,15,20,10,12,13,9,11,9,13,2,12, +15,3,6,16,11,13,24,3,3,16,16,5,3,8,9,17,16,3,7,16,15,4,4,24,20,7,11,14,12,9,6,19, +16,9,14,10,9,12,9,13,10,10,16,7,4,15,11,1,1,8,1,11,211,14,9,9,9,9,14,14,9,9,9,9, +14,144,15,6,4,6,6,15,20,10,12,13,10,12,9,13,2,12,15,3,6,16,11,13,24,3,3,15,17,5,3,8, +9,17,16,3,7,17,14,4,4,23,21,7,11,13,13,9,6,19,16,8,15,10,9,13,8,13,10,10,16,7,4,15, +11,1,1,8,1,11,15,3,7,15,11,13,24,3,2,4,4,11,13,4,3,6,13,13,17,8,3,8,7,8,10,10, +9,10,2,1,3,2,2,7,5,11,5,6,14,9,12,11,11,1,4,8,15,144,14,9,9,9,9,14,14,9,9,9, +9,14,80,15,1,1,15,15,1,1,15,221,6,16,15,3,4,24,12,11,6,8,7,1,1,12,11,2,2,10,9,3, +2,2,7,12,13,9,18,13,7,9,1,1,4,10,15,9,4,16,8,9,1,9,14,5,8,15,9,2,1,2,12,9, +10,11,13,12,9,22,26,4,6,16,15,3,4,24,12,11,16,5,3,15,11,1,3,5,9,15,4,7,16,10,10,13, +8,12,8,11,14,9,16,19,7,8,12,14,11,7,20,23,3,4,15,16,6,4,2,2,24,21,4,189,9,9,14,14, +9,9,9,9,14,14,9,9,190,8,15,9,2,1,2,12,9,10,11,13,12,9,22,26,4,6,16,15,3,4,24,12, +11,16,5,3,15,11,1,3,5,9,15,4,7,16,10,10,13,8,12,8,11,14,9,16,19,6,9,12,14,11,7,20, +24,4,4,15,16,6,4,2,3,23,21,4,6,16,15,3,4,23,13,11,6,8,7,1,1,12,11,2,2,10,9,3, +2,2,7,12,13,9,18,13,7,9,1,1,4,10,15,9,4,16,9,8,8,14,5,30,9,10,14,13,10,9,9,10, +13,14,10,9,96,1,15,15,1,1,15,15,1,0,0,0,0,3,0,32,255,192,2,31,1,191,0,121,0,139,0,148, +0,0,1,38,15,1,38,39,55,54,39,38,15,1,38,7,6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1, +6,7,39,38,7,6,31,1,6,7,39,38,7,6,31,1,6,7,6,21,48,49,7,6,23,22,63,1,22,23,7,6, +23,22,23,54,63,1,22,55,54,55,23,22,23,22,55,54,47,1,54,55,54,55,22,23,22,23,54,55,54,47,1,54, +55,54,55,50,49,23,22,55,54,47,1,54,49,54,55,54,55,23,22,55,54,47,1,54,39,55,54,39,1,38,39,49, +38,39,54,55,54,55,22,23,22,21,20,7,6,7,55,38,39,54,55,22,23,6,7,2,31,8,22,15,17,31,4,3, +20,22,7,4,7,15,15,30,4,9,21,20,5,5,31,28,8,15,18,17,12,8,26,21,11,19,14,11,16,11,18,13, +13,21,9,5,20,13,9,1,1,15,20,4,9,21,15,16,32,4,2,5,5,15,18,5,4,8,17,18,22,11,5,9, +10,10,14,13,13,12,4,2,4,2,3,9,8,14,7,8,19,12,16,14,14,2,1,5,10,21,18,6,5,1,8,7, +26,19,14,17,16,13,14,13,17,2,16,20,4,254,161,20,14,13,1,1,13,14,20,20,14,14,14,14,20,80,22,2, +2,22,21,2,1,22,1,89,20,4,4,31,16,14,22,7,4,21,14,1,2,2,9,12,20,6,9,21,12,13,19,11, +16,11,15,18,11,22,25,8,11,17,18,15,8,27,31,4,5,20,21,9,4,31,14,14,7,5,8,21,21,5,5,31, +17,14,8,10,11,1,1,17,14,1,3,3,14,12,5,2,2,8,17,17,12,19,23,10,10,1,1,5,1,1,13,20, +11,6,22,11,11,1,12,19,7,11,20,12,1,2,2,4,14,12,13,15,17,16,12,29,35,5,8,21,254,247,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,136,2,22,21,2,2,21,22,2,0,0,3,0,0,255,192,2,0, +1,192,0,13,0,27,0,54,0,0,37,55,35,34,39,38,39,38,39,38,43,1,19,33,5,20,23,49,22,51,33,50, +55,54,61,1,33,21,1,35,7,51,22,23,6,7,33,38,39,54,55,51,39,35,34,7,6,29,1,33,53,52,39,38, +35,1,128,64,109,23,18,18,8,8,18,18,23,141,64,1,0,254,128,9,9,14,1,192,14,9,9,254,0,1,224,41, +21,14,15,1,1,15,254,160,15,1,1,15,15,14,49,14,9,9,2,0,9,9,14,160,192,13,13,22,22,13,13,254, +224,192,14,9,9,9,9,14,64,64,1,0,64,1,15,15,1,1,15,15,1,64,9,9,14,128,128,14,9,9,0,0, +0,2,0,0,255,192,2,63,1,192,0,38,0,67,0,0,37,38,39,49,38,15,1,35,38,39,54,55,51,50,55,54, +55,54,39,38,43,1,34,15,1,39,6,7,21,22,23,33,50,63,1,54,55,54,39,37,51,21,22,23,51,54,55,53, +51,54,55,53,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22,23,2,56,10,16,16,14,119,121,14,1,2,13, +78,12,10,9,3,2,10,9,15,161,41,33,47,55,13,2,2,13,1,90,34,28,135,15,2,3,10,254,104,64,1,15, +64,15,1,64,15,1,1,15,64,1,15,64,15,1,64,15,1,1,15,112,13,3,2,10,88,1,15,15,1,7,8,12, +15,11,11,26,38,1,2,15,96,15,1,20,100,10,16,16,14,160,64,15,1,1,15,64,1,15,64,15,1,64,15,1, +1,15,64,1,15,64,15,1,0,4,0,0,255,192,2,127,1,192,0,76,0,103,0,130,0,155,0,0,37,54,63,2, +54,55,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52, +39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,20,31,1, +22,23,51,54,55,39,38,47,1,15,1,6,35,34,47,2,38,53,52,63,2,54,51,50,31,2,22,21,20,7,48,21, +37,50,63,2,54,53,48,53,38,47,2,38,35,34,15,2,6,21,20,31,2,22,51,5,52,47,2,38,35,34,15,2, +6,21,20,31,2,22,51,50,63,2,54,53,1,192,1,20,40,15,8,12,9,9,14,14,9,9,1,15,15,1,9,9, +14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,60,12,16,16,12,11,1,12, +113,59,82,38,65,47,9,22,1,98,30,12,2,2,2,2,12,30,2,2,30,12,2,2,2,2,12,30,2,2,254,242, +4,2,21,49,4,1,3,49,21,2,4,4,2,21,49,4,4,49,21,2,4,2,47,4,49,21,1,4,4,2,21,49, +4,4,49,21,2,4,4,2,21,49,3,16,23,12,16,38,13,6,196,14,9,9,9,9,14,112,15,1,1,15,176,14, +9,9,9,9,14,176,15,1,1,15,208,14,9,9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,254,233,59, +12,11,12,17,16,12,113,58,1,1,40,4,12,23,60,11,30,3,2,31,12,1,3,2,1,12,30,2,2,30,12,2, +1,3,1,1,148,4,49,21,2,4,1,3,2,21,49,4,4,49,21,2,3,4,2,21,49,5,208,4,2,21,49,4, +4,49,21,2,4,4,2,21,49,4,4,49,21,2,4,0,0,6,0,32,255,192,2,32,1,192,0,17,0,81,0,95, +0,113,0,167,0,185,0,0,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,19,35,38,39,54,55, +51,50,55,54,39,38,39,35,55,54,39,38,15,1,6,7,6,7,21,22,23,22,23,20,7,22,59,1,50,55,54,39, +38,39,35,38,39,54,55,51,50,55,54,39,38,39,35,38,39,54,55,51,50,55,54,39,38,47,1,54,51,50,23,55, +54,39,38,39,38,15,1,55,23,54,55,49,54,55,38,39,38,35,34,7,6,7,22,23,22,23,5,48,51,49,48,51, +53,54,55,54,63,2,54,39,38,39,38,15,1,6,39,38,63,1,54,39,38,39,34,15,1,6,39,38,63,1,54,39, +38,39,34,15,1,39,38,39,6,7,21,22,23,22,31,1,6,7,49,6,7,22,23,22,51,50,55,54,55,38,39,38, +39,1,160,14,9,9,9,9,14,14,9,9,9,9,14,103,159,7,1,1,7,128,11,7,7,1,6,19,199,47,20,4, +8,22,108,39,23,22,1,28,18,17,1,6,27,35,208,11,7,7,1,6,19,95,7,1,1,7,128,11,7,7,1,6, +19,127,7,1,1,7,160,11,7,7,1,6,19,207,8,8,9,10,15,3,5,6,12,19,7,21,17,184,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,254,110,1,1,1,29,28,49,74,34,3,6,6,11,19,7,34,2,8,6, +1,44,3,6,6,12,19,6,48,3,7,8,2,39,3,6,6,11,19,7,60,2,2,22,22,3,1,16,17,28,18,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,128,9,9,13,14,9,9,9,9,14,13,9,9,254,240,1, +7,7,1,9,8,12,18,1,17,8,22,20,4,33,14,31,32,40,26,6,21,22,29,16,14,19,9,8,12,18,1,1, +7,7,1,9,8,12,18,1,1,7,7,1,9,8,12,18,1,158,2,3,48,11,9,10,1,1,18,66,5,46,1,13, +13,20,20,14,14,14,13,20,20,14,13,1,162,26,51,40,40,17,23,108,11,9,9,2,1,18,107,7,2,3,7,138, +11,9,9,2,18,151,7,1,3,7,122,12,9,9,2,18,190,50,22,2,1,22,113,34,27,28,16,30,1,13,13,20, +20,14,14,14,13,20,20,14,13,1,0,0,0,2,0,0,255,192,2,128,1,192,0,51,0,76,0,0,37,23,22,23, +51,54,55,54,61,1,52,39,38,43,1,38,39,38,43,1,34,15,1,39,55,35,6,7,39,38,35,34,7,6,23,1, +22,55,54,47,1,52,47,1,7,39,55,54,23,22,15,1,37,34,7,49,6,29,1,20,23,22,59,1,23,22,55,54, +55,23,22,55,54,63,1,1,35,1,103,145,18,4,82,13,9,9,9,9,13,95,31,40,40,44,8,12,10,93,27,81, +6,67,54,123,7,8,11,8,12,16,2,80,19,15,12,16,136,11,149,12,25,65,12,11,8,8,27,254,185,13,9,9, +9,9,13,114,91,21,26,25,17,18,12,15,15,10,13,254,143,8,252,118,15,23,1,9,9,13,161,13,10,9,31,16, +17,9,85,19,74,1,36,96,5,9,19,15,254,48,12,16,19,15,106,14,10,121,10,21,60,8,8,12,11,26,69,9, +10,13,160,13,10,9,82,16,2,3,21,16,9,1,2,12,16,1,34,0,0,6,0,0,255,193,2,127,1,192,0,8, +0,17,0,27,0,36,0,51,0,93,0,0,1,21,20,23,22,59,1,17,35,23,38,39,54,55,22,23,22,7,37,17, +51,50,55,54,53,55,39,35,23,6,7,38,39,54,55,22,31,1,51,23,22,55,54,55,23,22,55,54,63,1,37,21, +5,52,47,1,7,39,55,54,23,22,15,1,23,22,23,53,38,39,38,43,1,34,15,1,39,55,35,6,7,39,38,35, +34,7,6,23,1,22,55,54,47,1,2,31,9,9,13,64,95,48,14,2,2,14,14,1,1,16,253,177,63,14,9,9, +1,56,40,64,2,13,14,1,1,14,13,2,64,18,91,21,26,25,17,18,12,15,15,10,13,254,231,1,111,11,149,12, +25,65,12,10,9,10,26,146,4,4,31,40,40,44,8,13,9,93,26,81,6,67,54,123,7,8,11,8,12,16,2,79, +19,15,12,16,135,1,64,224,14,9,9,1,0,224,1,15,14,1,1,14,15,1,224,255,0,9,9,14,180,44,208,15, +1,1,15,14,1,1,14,16,82,16,2,3,21,16,9,2,1,12,16,222,156,11,15,9,122,11,20,60,9,10,12,11, +24,118,3,4,194,31,16,17,8,87,20,74,1,36,96,5,9,19,15,254,49,12,16,19,15,105,0,0,0,8,0,0, +255,192,2,120,1,192,0,8,0,54,0,72,0,83,0,92,0,103,0,114,0,123,0,0,37,6,7,22,23,54,55,38, +47,1,38,39,49,38,39,49,38,39,38,39,38,43,1,6,7,6,7,20,23,22,23,21,51,53,51,54,55,54,55,39, +34,39,38,53,52,55,54,59,1,53,51,54,55,54,47,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,23,6,7,22,23,50,55,54,53,38,39,55,54,55,38,39,6,7,22,23,35,6,7,22,23,50,55,54,53,38,39, +21,6,7,22,23,50,55,54,53,38,39,23,6,7,22,23,54,55,38,39,2,96,22,2,2,22,22,2,2,22,131,12, +14,12,12,11,12,29,45,44,52,42,82,54,54,2,17,17,30,223,64,27,18,18,1,95,14,9,9,9,9,14,96,32, +18,9,9,7,141,14,9,9,9,9,14,14,9,9,9,9,14,144,21,2,2,21,10,7,7,2,22,128,22,2,2,22, +22,2,2,22,64,21,2,2,21,10,7,7,2,22,21,2,2,21,10,7,7,2,22,64,22,2,2,22,22,2,2,22, +89,2,22,22,2,2,22,22,2,84,29,44,34,31,32,17,41,23,24,2,54,54,82,43,36,37,27,177,32,1,18,18, +26,1,9,9,14,14,9,9,32,1,14,13,17,51,9,9,14,14,9,9,9,9,14,14,9,9,135,2,22,22,2,7, +7,10,22,2,48,2,22,22,2,2,22,22,2,2,22,22,2,7,7,10,22,2,96,2,22,22,2,7,7,10,22,2, +48,2,22,22,2,2,22,22,2,0,0,0,0,5,0,0,255,193,2,127,1,192,0,8,0,17,0,49,0,77,0,86, +0,0,37,54,55,38,39,6,7,22,23,21,54,55,38,39,6,7,22,31,1,39,51,54,55,54,39,38,39,38,39,38, +39,38,39,38,43,1,6,7,39,38,35,34,7,6,23,1,22,55,54,39,37,34,39,49,38,53,52,55,54,55,51,37, +6,21,20,23,22,23,21,51,53,51,54,55,54,55,39,35,55,54,55,38,39,6,7,22,23,2,95,22,2,2,22,21, +2,2,21,22,2,2,22,22,2,3,21,24,190,7,18,9,9,7,11,13,12,13,12,12,29,45,44,52,42,64,48,41, +7,8,11,8,12,16,2,79,19,15,13,16,254,201,14,8,9,9,8,14,6,254,204,18,17,17,30,223,64,26,17,18, +2,7,87,223,22,2,2,22,22,2,3,21,137,2,21,21,2,2,21,21,2,96,2,22,21,2,2,22,21,2,62,149, +1,13,14,16,27,41,35,33,33,18,42,23,24,1,36,32,5,9,19,15,254,49,12,16,17,16,54,9,9,13,13,10, +9,1,240,37,43,43,37,36,27,177,31,1,16,16,25,6,57,2,22,21,2,2,22,21,2,0,0,0,0,4,0,0, +255,192,2,0,1,192,0,11,0,34,0,56,0,74,0,0,19,6,23,49,22,23,21,51,53,39,6,7,5,51,55,35, +21,51,50,55,54,55,53,35,38,39,54,55,51,55,35,38,39,52,63,1,38,39,49,38,39,49,38,39,38,39,38,43, +1,6,7,6,7,23,33,52,47,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,0,1,17,17,31, +160,220,3,1,1,80,160,16,255,146,21,16,17,7,127,15,1,1,15,139,10,149,15,1,15,173,11,13,12,13,12,12, +29,45,44,52,66,63,51,50,23,226,1,17,3,157,14,9,9,9,9,14,14,8,9,9,9,13,1,8,46,38,39,28, +177,195,161,14,14,184,48,192,12,12,20,4,1,15,15,1,32,1,15,15,1,93,27,41,35,33,33,18,41,23,24,1, +33,34,56,164,6,7,51,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,0,1,192,0,8, +0,17,0,53,0,138,0,0,19,6,7,22,23,54,55,52,39,23,6,7,22,23,54,55,38,39,23,38,39,49,38,39, +49,38,39,38,39,38,43,1,6,7,6,7,20,23,22,23,21,33,53,51,54,55,54,55,53,51,54,55,54,47,1,35, +6,7,6,31,1,22,7,6,35,34,47,1,38,7,6,7,21,6,7,38,39,53,38,39,38,15,1,6,35,34,39,38, +63,1,54,39,38,39,35,38,39,54,55,51,54,55,54,47,1,38,55,54,31,1,22,55,54,55,53,54,55,22,23,21, +22,23,22,63,1,54,23,22,15,1,6,23,22,23,51,22,23,6,7,208,15,1,2,13,14,2,15,64,14,1,1,15, +15,1,3,14,237,12,14,12,12,11,12,29,45,44,52,74,82,54,54,2,17,17,30,1,0,64,27,18,17,1,32,19, +9,9,7,141,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5,7, +6,5,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,9,9,12,11,8,17,18,19,1,1,15,15, +1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,14,1,1,14,1,17,1,15,14,1,1,15,13,2,64,1, +15,15,1,1,15,14,2,36,29,44,34,31,32,17,41,23,24,2,54,54,82,43,37,36,27,177,64,1,18,18,26,65, +1,14,13,17,35,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,5,5, +11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1,1,15,12,22, +8,7,14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,0,0,0,0,3,0,0,255,192,2,64,1,192,0,43, +0,61,0,76,0,0,37,23,6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53, +52,55,54,59,1,50,23,22,29,1,23,22,7,6,7,6,7,43,1,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,7,51,54,55,38,39,38,39,35,6,7,6,7,22,23,2,0,1,1,18,18,27,254,191,27,18,18,1, +32,14,9,9,10,1,0,11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,1,9,9,13,32,224,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,160,160,27,18,18, +1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9,14,121,47,10,14,13,9,9,1, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,15,34,23,22,1,1,22,23,34,15,1,0,0,0, +0,3,0,0,255,192,2,128,1,192,0,34,0,61,0,66,0,0,19,54,51,49,50,31,1,22,21,35,6,7,53,38, +39,35,6,7,21,22,23,51,21,35,38,39,38,39,53,35,38,39,38,63,1,23,51,50,23,22,29,1,51,22,23,6, +7,6,7,33,38,39,38,39,54,55,51,53,52,55,54,51,23,21,51,53,35,218,10,12,12,10,208,10,144,30,18,1, +15,64,15,1,1,15,63,159,20,14,13,1,32,21,9,7,15,208,118,224,14,9,9,32,15,1,1,13,14,20,254,223, +20,13,14,1,2,14,32,10,9,14,16,192,192,1,184,8,8,193,9,14,1,21,38,15,1,1,15,64,15,1,128,1, +13,14,20,112,1,19,20,15,193,248,9,9,14,160,1,15,20,14,13,1,1,13,14,20,15,1,160,14,9,9,48,144, +144,0,0,0,0,6,0,0,255,193,2,128,1,192,0,51,0,63,0,148,0,157,0,166,0,217,0,0,55,38,53,49, +52,63,1,35,34,39,38,39,54,55,54,55,51,39,38,53,52,55,54,51,50,23,53,38,39,38,39,6,7,6,7,6, +7,6,7,6,21,22,23,22,63,1,54,55,34,7,38,39,19,55,38,39,35,6,15,1,54,51,50,23,19,54,47,1, +38,55,54,55,51,54,55,38,39,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38,39,6,7,21,6,7, +6,47,1,38,7,6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22,51,50,63,1,54,23, +22,23,21,22,23,54,55,53,54,55,54,31,1,22,51,54,55,39,38,39,54,55,22,23,6,7,23,38,39,54,55,22, +23,6,7,5,38,39,38,39,38,39,38,39,6,7,6,7,21,54,55,22,23,22,21,20,15,1,51,22,23,22,23,6, +7,6,7,35,23,22,21,20,7,6,7,38,35,22,31,1,22,55,54,55,52,39,196,15,15,8,12,20,14,13,1,1, +13,14,20,12,8,15,15,14,20,14,12,1,19,20,30,29,16,16,14,2,3,69,33,4,2,37,37,49,60,33,19,4, +3,20,14,147,1,1,15,16,15,1,1,11,12,14,11,79,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7, +14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1, +1,15,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5,7,6,5, +134,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,1,28,33,69,3,2,14,16,16,29,30,19,20,1, +12,15,19,14,15,15,8,12,20,14,13,1,1,13,14,20,12,8,14,14,14,19,4,4,19,33,60,49,37,37,2,4, +3,15,19,20,14,9,14,14,20,20,14,13,1,9,14,20,19,14,14,7,27,28,19,18,1,1,15,15,24,4,4,109, +122,15,15,47,26,27,12,15,10,25,1,1,13,1,38,135,15,1,1,15,135,7,7,254,241,12,11,8,17,18,19,1, +1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,14,1,1,14,12,22,8,7,14,9,9,9,12, +11,8,17,18,19,1,1,15,15,1,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8, +7,14,9,5,1,4,119,1,14,14,3,2,14,14,2,64,1,15,14,1,1,15,14,1,23,122,109,4,4,24,15,15, +1,1,18,19,28,27,7,1,1,14,14,19,20,14,9,1,13,14,20,20,14,13,1,9,14,20,19,14,14,1,1,25, +9,16,12,27,26,47,15,15,0,5,0,0,255,192,2,64,1,192,0,33,0,51,0,69,0,100,0,136,0,0,55,52, +63,1,54,55,54,55,38,39,35,6,7,6,7,21,20,23,22,51,23,20,23,22,59,1,50,55,54,61,1,39,38,53, +37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,5,39,38,7,6,29,1,35,53,52,39,38,15,1,6,31,1,22,55,54,61,1,51,21,20,23,22,63, +1,54,39,55,35,34,7,6,7,22,23,22,31,1,22,21,20,15,1,21,20,23,22,59,1,50,55,54,61,1,50,55, +54,61,1,38,39,38,39,96,14,72,1,2,1,1,17,42,64,27,18,18,1,9,9,13,1,9,9,14,64,14,9,9, +50,14,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,92,72,6,7,7,128,7,7,6,72,8,8,72,6,7,7,128,7,7,6,72,8,8,68,64, +20,16,16,7,1,1,2,1,72,14,14,50,9,9,14,64,14,9,9,14,9,9,1,18,18,27,144,19,13,68,1,1, +1,1,38,2,1,18,18,27,96,14,9,9,128,14,9,9,9,9,14,96,48,13,19,176,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,167,68,5,3,3,8,36,36, +8,3,3,5,68,9,9,68,5,3,3,8,36,36,8,3,3,5,68,9,9,135,11,11,18,1,1,1,1,68,13,19, +19,13,48,96,14,9,9,9,9,14,128,9,9,14,96,27,18,18,1,0,0,2,0,0,255,192,2,128,1,192,0,28, +0,53,0,0,19,39,38,55,51,22,31,1,51,22,23,22,23,6,7,6,7,35,23,22,7,6,39,1,38,55,54,31, +1,39,5,7,6,7,35,38,63,1,35,7,6,43,1,38,39,52,63,1,39,38,53,52,55,49,238,40,3,18,56,19, +9,101,116,29,31,31,3,3,31,31,29,73,190,16,12,15,19,253,176,16,12,15,19,199,196,1,65,66,9,19,56,18, +3,49,103,43,5,8,42,13,1,1,31,31,1,10,1,31,141,17,3,1,15,176,1,18,18,27,28,18,17,1,149,15, +19,16,12,1,208,15,19,16,12,156,32,253,114,15,1,3,17,173,59,6,1,14,1,2,111,109,2,2,10,3,0,0, +0,3,0,0,255,192,1,128,1,192,0,23,0,44,0,73,0,0,1,39,38,43,1,52,39,38,43,1,34,7,6,21, +23,51,53,51,23,22,63,1,54,39,7,35,6,7,6,15,1,6,23,22,23,51,54,55,54,47,1,38,39,38,39,23, +6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,59,1,22,23,21,51,22,23,21,1,123,43,20, +25,67,9,9,14,65,13,10,9,1,128,67,43,11,12,22,10,10,143,152,25,18,18,2,21,2,19,18,29,191,29,18, +19,2,21,2,17,18,25,3,1,12,40,1,13,26,12,2,39,12,1,1,12,40,1,13,26,13,1,40,12,1,1,98, +43,19,14,9,9,9,9,14,96,32,43,10,10,22,12,11,66,1,16,16,25,224,29,20,20,1,1,20,20,29,224,25, +16,16,1,173,12,2,40,12,1,1,12,40,2,12,26,12,2,40,13,1,12,40,1,13,26,0,0,0,0,3,0,0, +255,192,1,128,1,192,0,20,0,40,0,64,0,0,19,35,6,7,6,15,1,6,23,22,23,51,54,55,54,47,1,38, +39,38,39,3,38,39,49,38,39,54,55,54,55,54,23,22,23,22,23,6,7,6,7,19,39,38,43,1,52,39,38,43, +1,34,7,6,21,23,51,53,51,23,22,63,1,54,39,236,152,25,18,18,2,21,2,19,18,29,191,29,18,19,2,21, +2,17,18,25,77,26,18,18,1,2,19,20,15,8,9,14,20,19,2,1,18,18,28,220,43,20,25,67,9,9,14,65, +13,10,9,1,128,67,43,11,12,22,10,10,1,32,1,16,16,25,224,29,20,20,1,1,20,20,29,224,25,16,16,1, +255,0,1,16,17,25,20,30,29,18,8,8,18,29,30,20,25,17,16,1,1,66,43,19,14,9,9,9,9,14,96,32, +43,10,10,22,12,11,0,0,0,4,0,16,255,192,1,240,1,192,0,8,0,17,0,40,0,145,0,0,37,6,7,22, +23,54,55,38,47,1,6,7,22,23,54,55,52,39,55,39,38,35,34,15,1,6,7,22,23,22,23,22,51,50,55,54, +55,54,55,38,39,7,35,6,7,6,21,20,31,1,22,21,6,7,34,47,1,38,35,34,7,6,29,1,6,7,38,39, +53,52,39,38,35,34,15,1,6,35,38,39,52,63,1,54,53,52,39,38,39,35,38,39,54,55,51,50,55,54,53,52, +47,1,38,55,54,55,50,31,1,22,51,50,55,54,61,1,54,55,22,23,21,22,23,22,51,50,63,1,54,51,22,23, +20,15,1,6,21,20,23,22,59,1,22,23,6,7,1,32,15,1,1,15,15,1,1,15,64,15,1,2,13,14,2,15, +243,192,9,10,10,8,192,29,1,3,48,48,56,57,28,29,56,57,47,48,3,1,28,83,12,15,8,9,9,9,5,2, +14,7,5,8,11,12,13,9,10,1,15,15,1,10,9,13,12,11,8,5,7,14,2,5,9,9,9,8,15,12,15,1, +1,15,12,15,8,9,9,9,5,1,1,15,6,5,8,11,12,13,9,10,1,15,15,1,1,9,9,13,12,11,8,5, +7,14,2,5,9,9,9,8,15,12,15,1,1,15,193,1,15,14,1,1,14,14,2,64,1,15,15,1,1,15,14,2, +107,80,4,4,80,13,30,129,86,85,43,42,43,42,86,85,128,31,13,171,1,9,10,12,13,10,8,5,7,14,1,5, +9,9,9,8,15,12,15,1,1,15,12,15,8,9,9,9,5,2,13,7,5,8,10,13,12,10,9,1,1,15,15,1, +10,9,13,12,11,7,5,6,14,2,5,8,9,9,8,15,13,15,1,1,15,12,15,8,9,9,9,4,1,14,6,5, +9,10,12,13,9,10,2,14,15,2,0,0,0,2,0,0,255,192,2,0,1,192,0,66,0,80,0,0,37,35,53,51, +54,55,53,38,47,1,34,7,6,29,1,35,53,52,55,54,51,50,23,22,29,1,22,23,51,54,55,53,38,39,38,7, +6,7,6,7,21,35,53,52,39,38,43,1,6,7,21,22,23,51,21,35,6,7,21,22,23,33,54,55,53,38,39,5, +22,23,49,22,23,33,54,55,54,55,53,33,21,1,240,96,64,15,1,1,15,80,14,9,9,64,9,9,14,14,9,9, +1,15,32,15,1,1,34,33,47,35,21,20,1,64,9,9,14,80,15,1,1,15,64,96,15,1,1,15,1,224,15,1, +1,15,254,48,1,27,27,41,1,0,41,27,27,1,254,64,160,32,2,13,15,15,1,2,9,9,14,47,192,13,10,9, +9,10,13,16,15,1,1,15,16,46,28,27,7,8,28,27,36,188,48,14,9,9,1,15,15,16,1,32,1,15,32,15, +1,1,15,32,15,1,128,41,27,27,1,1,27,27,41,32,32,0,0,0,0,5,0,0,255,192,2,0,1,192,0,17, +0,37,0,55,0,73,0,116,0,0,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,6,7,49, +6,7,22,23,22,23,51,54,55,54,55,38,39,38,39,35,55,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23, +22,51,7,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,6,7,22,23,22,21,6,7,6,7,35, +38,39,38,39,54,55,54,55,51,38,39,35,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,1, +64,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27,18,18,1,1,18,18,27,192,27,18,18,1,1, +18,18,27,192,224,14,9,9,9,9,14,14,9,9,9,9,14,176,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,208,1,30,28,17,18,1,27,27,41,192,41,27,27,1,1,27,27,41,89,24,1,128,41,27,27,1,1,27,27, +41,1,64,41,27,27,1,1,27,27,41,192,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,32,1,18,18, +27,27,18,18,1,1,18,18,27,27,18,18,1,224,9,9,14,14,9,9,9,9,14,14,9,9,32,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,96,43,27,11,24,24,31,41,27,27,1,1,27,27,41,41,27,27,1,27,37, +1,27,27,41,128,41,27,27,1,1,27,27,41,128,41,27,27,1,0,0,0,4,0,16,255,192,1,176,1,192,0,10, +0,59,0,79,0,118,0,0,37,54,55,22,23,21,6,7,38,39,53,3,50,23,49,22,21,20,7,6,43,1,21,22, +23,55,54,51,50,23,22,21,20,15,1,22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,35,34,39,38,53,52, +55,54,59,1,23,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,7,21,20,15,1,6,29,1, +22,23,51,54,55,38,39,35,54,63,1,54,61,1,52,39,38,39,6,15,1,6,23,22,63,1,54,51,22,23,51,1, +20,1,11,11,1,1,11,11,1,4,14,9,9,9,9,14,16,57,43,21,10,13,13,10,9,9,24,32,1,2,59,59, +88,88,59,59,2,2,49,49,76,16,14,9,9,9,9,14,96,16,22,15,14,1,1,14,15,22,22,15,14,1,1,14, +15,22,116,4,39,21,1,19,64,18,2,2,18,44,2,9,39,13,15,14,22,37,13,1,4,17,18,6,2,3,9,10, +1,1,192,11,1,1,11,96,11,1,1,11,96,1,0,9,9,14,14,9,9,34,10,35,22,9,9,10,13,13,10,24, +49,64,88,59,59,2,2,59,59,88,80,56,56,14,34,9,9,14,14,9,9,204,1,14,15,22,96,22,15,14,1,1, +14,15,22,96,22,15,14,1,53,2,5,5,44,24,31,16,18,2,2,18,19,1,14,11,44,16,20,2,23,15,14,1, +2,34,2,18,6,5,17,1,9,1,12,0,0,3,0,0,255,192,2,128,1,192,0,33,0,44,0,61,0,0,19,55, +54,55,33,22,31,1,22,21,20,7,6,35,33,23,53,51,21,23,53,51,21,23,22,7,6,39,1,38,55,54,31,1, +7,52,63,1,23,35,34,39,38,53,49,5,53,23,21,6,7,6,7,35,38,39,38,39,53,51,21,51,74,8,14,26, +1,140,26,14,76,6,11,10,16,254,186,43,64,128,64,55,16,12,15,19,253,176,16,12,15,19,35,74,6,15,101,85, +16,10,11,1,64,64,1,13,14,20,224,20,14,13,1,64,192,1,159,12,20,1,1,20,114,9,11,16,10,11,34,2, +52,99,151,202,43,15,19,16,12,1,208,15,19,16,12,28,122,11,9,22,79,11,10,16,229,36,51,65,20,14,13,1, +1,13,14,20,240,160,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,54,0,73,0,0,19,55,54,51,33,50, +31,1,22,7,6,7,6,35,38,39,6,7,38,39,6,7,23,53,22,51,50,55,49,54,55,21,23,22,7,6,39,1, +38,55,54,31,2,38,39,49,38,55,23,6,35,34,39,49,23,51,23,6,35,33,38,39,38,39,53,22,23,51,22,51, +50,55,21,95,23,8,16,1,100,16,8,58,21,15,16,42,6,7,40,25,25,40,40,25,8,11,179,17,18,9,8,5, +7,87,16,12,15,19,253,176,16,12,15,19,56,17,33,17,17,4,106,14,17,6,6,48,206,149,15,20,254,192,27,18, +18,1,6,5,1,8,8,19,17,1,143,36,13,13,91,37,37,37,8,1,1,28,28,1,1,28,9,7,140,100,5,1, +1,1,148,68,15,19,16,12,1,208,15,19,16,12,44,174,5,26,26,31,83,6,1,161,118,10,1,18,18,27,195,1, +1,1,5,133,0,3,0,0,255,193,2,127,1,192,0,19,0,56,0,74,0,0,19,21,20,7,6,7,6,7,6,23, +33,54,55,54,53,54,55,37,6,21,1,39,54,55,54,55,38,39,38,39,6,7,6,7,22,23,39,53,52,55,54,55, +33,6,7,39,38,35,34,7,6,23,1,22,55,54,39,3,52,55,49,54,55,22,23,22,21,20,7,6,7,34,39,38, +39,64,5,6,11,4,5,3,18,1,25,22,8,1,16,6,254,197,3,2,55,110,37,25,24,1,2,27,27,41,41,27, +27,1,1,24,57,17,16,28,254,227,37,26,57,7,8,11,8,12,16,2,79,19,15,13,16,152,9,10,13,14,9,9, +9,9,14,13,9,9,1,1,1,172,25,22,22,32,12,14,18,2,1,21,1,1,41,50,246,21,21,254,234,86,8,53, +53,77,82,54,54,2,2,54,54,81,76,52,44,84,63,50,49,29,2,48,45,5,9,19,15,254,49,12,16,17,16,1, +22,27,18,18,1,1,18,18,27,27,18,18,1,18,18,28,0,5,0,0,255,192,2,128,1,192,0,17,0,34,0,65, +0,80,0,92,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,34,7,22,21,22,21,6, +7,51,54,55,38,39,38,39,35,7,54,55,38,39,38,39,6,7,39,54,53,38,39,38,39,6,7,39,38,35,34,7, +6,23,1,22,55,54,47,1,7,6,7,49,6,7,20,23,22,51,33,54,55,39,35,47,1,35,6,7,6,7,22,23, +51,38,39,2,0,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,22,19,17,1,1,1,32,199,16,2,1, +25,25,37,62,93,26,1,1,30,29,43,56,30,42,15,1,22,23,34,37,23,29,7,8,11,8,12,16,2,79,19,15, +12,16,233,127,60,40,40,2,8,8,12,1,72,18,8,184,56,84,64,34,37,25,25,1,2,16,199,22,9,1,32,1, +22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,32,8,3,2,5,6,51,37,2,17,39,27,26,1,94,29,41, +44,30,29,1,2,44,32,20,26,34,23,22,1,1,27,23,5,9,19,15,254,49,12,16,19,15,182,66,1,38,38,56, +12,7,8,1,15,144,109,51,1,26,27,39,17,2,26,35,0,3,0,0,255,192,2,0,1,192,0,113,0,131,0,140, +0,0,1,22,23,49,22,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,51,50,23,22,21,20,7,6,43,1, +6,7,6,31,1,22,21,20,7,6,35,34,47,1,38,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,15, +1,6,35,34,39,38,53,52,63,1,54,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,47,1,38,53,52, +55,54,51,50,31,1,22,55,54,55,53,52,55,54,51,50,23,22,29,1,7,6,7,49,6,7,22,23,22,23,54,55, +54,55,38,39,38,39,23,54,55,38,39,6,7,22,23,1,32,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13, +39,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3,9,9,14,14,9,9,3, +32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9,9,9,9,14,12,38,13,13,25,8,9,9,10,13, +12,10,8,30,31,32,3,9,9,14,14,9,9,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,22, +2,2,22,22,2,2,22,1,148,38,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3,9,9,14,14,9,9,3, +32,31,30,8,10,12,13,10,9,9,8,25,13,13,39,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13, +12,10,8,30,31,32,3,9,9,14,14,9,9,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9, +9,9,9,14,12,132,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,152,2,22,22,2,2,22,22,2,0, +0,3,0,0,255,192,2,128,1,192,0,67,0,78,0,124,0,0,19,52,55,49,54,55,54,51,50,31,1,22,55,54, +55,53,54,55,54,51,50,23,22,29,1,22,23,22,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,51,50,23, +22,21,20,7,6,43,1,6,7,6,31,1,22,7,6,39,1,38,55,54,31,3,54,53,38,39,38,39,34,7,49,7, +54,55,5,6,7,6,7,21,20,7,6,35,34,39,38,39,53,38,39,38,15,1,6,35,34,39,38,53,52,63,1,54, +39,38,39,35,34,39,38,39,54,55,54,59,1,135,1,1,1,11,12,13,10,8,29,32,31,3,1,9,9,13,14,10, +9,3,32,31,30,8,10,12,13,10,9,9,8,25,13,13,38,12,14,9,9,9,9,14,11,27,16,15,2,154,16,12, +15,19,253,176,16,12,15,19,96,130,69,2,1,13,14,20,13,10,157,22,15,1,0,20,14,14,1,9,10,14,13,9, +9,1,3,31,32,29,8,10,13,12,11,9,9,9,25,13,13,38,13,13,9,9,1,1,9,9,13,13,1,112,1,1, +1,2,9,9,8,25,13,13,38,12,14,9,9,9,9,14,12,38,13,13,25,8,9,9,10,13,12,10,8,30,31,32, +3,9,9,14,14,9,9,1,18,18,23,121,15,19,16,12,1,208,15,19,16,12,75,102,55,6,7,20,14,13,1,6, +42,1,13,203,2,15,15,24,11,14,9,9,9,9,14,11,39,13,13,25,8,9,9,10,13,12,10,8,30,31,32,3, +9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,128,1,192,0,84,0,102,0,111,0,196,0,214,0,0,37,51, +54,55,38,39,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38,39,6,7,21,6,7,6,47,1,38,7, +6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22,51,50,63,1,54,23,22,23,21,22,23, +54,55,53,54,55,54,31,1,22,51,50,55,54,47,1,38,55,54,55,39,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,38,39,54,55,22,23,6,7,5,35,38,39,38,63,1,54,39,38,15,1,6,39,38,39,53,38, +39,6,7,21,6,7,6,47,1,38,7,6,31,1,22,7,6,7,35,6,7,22,23,51,22,23,22,15,1,6,23,22, +51,50,63,1,54,23,22,23,21,22,23,54,55,53,54,55,54,31,1,22,51,50,55,54,47,1,38,55,54,55,51,54, +55,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,91,16,19,2,2,19,16,30,10,10, +19,12,12,12,15,15,12,22,24,25,2,1,20,20,1,2,25,24,22,12,15,15,12,12,12,19,10,10,30,16,19,2, +2,19,16,30,10,10,19,12,12,12,7,8,9,6,12,22,24,25,2,2,19,20,1,2,25,24,22,12,6,9,8,7, +12,12,12,19,10,10,30,187,14,9,9,9,9,14,14,9,9,9,9,14,80,15,1,1,15,15,1,1,15,1,128,12, +22,8,7,14,9,9,9,11,12,8,17,18,18,2,1,15,15,1,2,18,18,17,8,12,11,9,9,9,14,7,8,22, +12,15,1,1,15,12,22,8,7,14,9,9,9,5,6,7,5,8,17,18,18,2,1,15,15,1,2,18,18,17,8,5, +7,6,5,9,9,9,14,7,8,22,12,15,1,1,15,144,14,9,9,9,9,14,14,9,9,9,9,14,235,1,20,20, +1,2,25,24,22,12,15,15,12,12,12,19,10,10,30,16,19,2,2,19,16,30,10,10,19,12,12,12,15,15,12,22, +24,25,2,2,19,20,1,2,25,24,22,12,15,15,6,6,12,19,10,10,29,17,19,2,2,19,16,30,10,10,19,12, +6,6,15,15,12,22,24,25,2,21,9,9,14,14,9,9,9,9,14,14,9,9,32,1,15,15,1,1,15,15,1,128, +2,18,18,17,8,12,11,9,9,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,9,9,11,12,8,17,18, +18,2,1,15,15,1,2,18,18,17,8,12,11,5,5,9,14,7,8,22,12,15,1,1,15,12,22,8,7,14,9,5, +5,11,12,8,17,18,18,2,1,15,15,1,32,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,3,0,0, +255,192,1,192,1,192,0,51,0,64,0,77,0,0,37,39,53,52,39,38,43,1,34,15,1,6,35,34,47,1,38,43, +1,34,7,6,29,1,7,6,29,1,20,23,22,59,1,53,52,63,1,39,22,51,50,55,7,21,51,50,55,54,61,1, +52,39,5,7,6,35,34,39,38,63,1,54,23,22,7,5,6,35,34,47,1,38,55,54,31,1,22,7,1,181,53,9, +9,14,32,7,6,25,27,31,31,27,25,6,7,32,14,9,9,53,11,9,9,14,160,2,13,57,35,39,39,35,74,192, +14,9,9,11,254,206,48,5,6,6,5,10,10,48,11,11,10,10,1,0,5,6,6,5,48,10,10,11,11,48,10,10, +208,80,128,14,9,9,4,17,17,17,17,4,9,9,14,128,80,16,19,205,14,9,9,224,5,5,41,170,19,19,221,224, +9,9,14,205,19,16,131,48,5,5,11,11,48,10,10,11,11,48,5,5,48,11,11,10,10,48,11,11,0,4,0,0, +255,192,1,192,1,192,0,51,0,80,0,98,0,117,0,0,37,39,53,52,39,38,43,1,34,15,1,6,35,34,47,1, +38,43,1,34,7,6,29,1,7,6,29,1,20,23,22,59,1,53,52,63,1,39,22,51,50,55,7,21,51,50,55,54, +61,1,52,39,5,38,55,54,31,1,55,54,23,22,15,1,23,22,7,6,35,34,47,1,7,6,35,34,39,38,63,1, +39,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,37,35,38,55,53,54,55,54,23,22,23,21,51, +22,23,22,7,6,7,1,181,53,9,9,14,32,7,6,25,27,31,31,27,25,6,7,32,14,9,9,53,11,9,9,14, +160,2,13,57,35,39,39,35,74,192,14,9,9,11,254,139,7,7,8,9,15,16,8,9,6,6,16,16,6,6,4,5, +5,3,16,15,4,5,5,3,7,7,15,15,32,17,11,12,12,11,17,17,11,12,12,11,17,1,7,48,8,1,1,7, +8,11,21,1,5,22,4,1,8,7,11,208,80,128,14,9,9,4,17,17,17,17,4,9,9,14,128,80,16,19,205,14, +9,9,224,5,5,41,170,19,19,221,224,9,9,14,205,19,16,33,9,8,8,8,15,15,8,8,8,9,15,16,8,9, +3,3,16,16,3,3,9,8,16,15,183,12,11,17,17,11,12,12,11,17,17,11,12,120,1,6,48,11,7,8,1,4, +22,5,1,21,11,8,7,1,0,1,0,0,0,32,2,64,1,96,0,46,0,0,37,39,7,6,35,34,47,1,38,53, +52,55,54,51,50,31,1,55,54,51,50,31,1,53,52,55,54,55,22,23,22,29,1,20,7,6,43,1,34,39,38,53, +52,55,54,59,1,1,211,147,105,10,13,13,10,160,9,9,10,13,13,10,136,106,10,13,13,10,169,9,9,14,14,9, +9,9,9,14,160,14,9,9,9,9,14,83,96,147,106,9,9,160,10,13,13,10,9,9,138,106,9,9,170,84,13,9, +9,1,1,9,9,13,161,14,9,9,9,9,14,14,9,9,0,1,0,0,0,32,2,64,1,96,0,47,0,0,1,34, +39,49,38,53,52,55,54,59,1,50,23,22,29,1,20,7,6,35,34,39,38,61,1,7,6,35,34,47,1,7,6,35, +34,39,38,53,52,63,1,54,51,50,31,1,55,7,1,128,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9, +169,10,13,13,10,106,136,10,13,13,10,9,9,160,10,13,13,10,105,147,83,1,32,9,9,14,14,9,9,9,9,14, +160,14,9,9,9,9,14,83,170,9,9,106,138,9,9,10,13,13,10,160,9,9,106,148,1,0,0,0,0,2,0,0, +255,192,1,192,1,192,0,38,0,73,0,0,37,21,20,7,6,35,33,34,39,38,61,1,52,39,38,35,34,7,6,29, +1,22,23,22,23,33,54,55,54,55,53,52,39,38,35,34,7,6,21,3,7,6,21,20,23,22,51,50,63,1,21,20, +23,22,51,50,55,54,61,1,23,22,51,50,55,54,53,52,47,1,38,35,34,7,1,128,9,9,14,255,0,14,9,9, +9,9,14,14,9,9,1,27,27,41,1,0,41,27,27,1,9,9,14,14,9,9,183,128,9,9,10,13,13,10,73,9, +9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,96,64,14,9,9,9,9,14,64,14,9,9,9,9,14, +64,41,27,27,1,1,27,27,41,64,14,9,9,9,9,14,1,87,128,10,13,13,10,9,9,74,211,14,9,9,9,9, +14,211,74,9,9,10,13,13,10,128,9,9,0,3,0,0,255,224,1,192,1,160,0,69,0,73,0,78,0,0,37,51, +50,23,22,21,20,7,6,43,1,23,51,50,23,22,21,20,7,6,43,1,23,22,7,6,7,6,39,38,47,1,35,7, +6,7,6,39,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,53,52,55,54,59,1,55,54, +55,22,31,1,35,39,7,51,15,1,51,39,35,1,69,91,14,9,9,9,9,14,64,13,51,14,9,9,9,9,14,24, +22,4,4,5,13,13,11,12,5,32,198,31,6,12,12,12,13,5,4,4,22,24,14,9,9,9,9,14,51,13,64,14, +9,9,9,9,14,91,72,8,21,21,9,71,69,33,32,65,91,14,145,13,118,224,9,9,14,14,9,9,32,9,9,14, +14,9,9,52,12,12,12,6,4,4,5,13,76,76,13,5,4,4,6,12,12,12,52,9,9,14,14,9,9,32,9,9, +14,14,9,9,172,19,1,1,19,172,77,77,64,32,32,0,0,5,0,0,255,192,1,64,1,192,0,47,0,52,0,63, +0,68,0,81,0,0,19,21,22,23,22,23,6,7,22,23,22,21,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,35,34,39,38,53,17,52,55,54,59,1,53,52,55,54,51,50,23,22,21,49,7,35,21,51,53,23,38,39,49,38, +39,21,54,55,54,55,7,35,21,51,53,23,54,55,49,54,55,38,39,38,39,35,21,51,176,48,31,32,1,1,20,24, +15,14,1,32,31,48,32,9,9,14,14,9,9,70,18,12,12,11,11,16,74,9,9,14,14,9,9,64,48,48,112,1, +13,14,20,20,14,13,1,112,48,48,96,20,14,13,1,1,13,14,20,32,32,1,160,32,1,32,31,48,37,28,15,25, +25,30,48,31,32,1,32,14,9,9,9,9,14,32,12,12,18,1,48,16,11,11,32,14,9,9,9,9,14,96,96,96, +48,20,14,13,1,96,1,13,14,20,112,96,96,96,1,13,14,20,20,14,13,1,96,0,0,3,0,0,255,192,1,64, +1,192,0,70,0,83,0,95,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54,51,50,23,22,29,1, +20,21,22,23,22,23,6,7,22,23,22,21,6,7,6,7,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35, +34,39,38,61,1,35,34,39,38,53,17,52,55,54,59,1,53,23,54,55,49,54,55,38,39,38,39,35,21,51,7,21, +51,54,55,54,55,38,39,38,39,35,48,9,9,14,14,9,9,32,9,9,14,14,9,9,35,22,22,1,1,20,24,15, +14,1,32,31,48,9,9,14,14,9,9,32,9,9,14,14,9,9,6,18,12,12,11,11,16,10,128,20,14,13,1,1, +13,14,20,112,112,112,144,20,14,13,1,1,13,14,20,144,1,160,14,9,9,9,9,14,32,32,14,9,9,9,9,14, +32,2,3,10,29,29,39,37,28,15,25,25,30,48,31,32,1,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14, +32,12,12,18,1,48,16,11,11,32,192,1,13,14,20,20,14,13,1,96,64,96,1,13,14,20,20,14,13,1,0,0, +0,1,0,0,255,192,1,127,1,192,0,27,0,0,1,38,43,1,55,54,39,38,43,1,6,15,1,6,23,22,59,1, +7,6,23,22,51,50,55,19,54,39,1,125,7,14,157,51,5,7,8,12,176,20,4,32,1,7,7,11,146,41,3,17, +4,5,12,8,208,7,6,1,19,13,127,12,10,11,1,20,240,11,8,8,194,19,8,3,10,1,48,12,13,0,0,0, +0,2,0,0,255,192,1,192,1,192,0,38,0,50,0,0,37,17,38,39,38,39,35,21,6,7,6,47,1,7,6,39, +38,39,53,35,6,7,6,7,17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,7,33,34,39,38,53,52,55,54, +51,33,21,1,192,1,13,14,20,48,1,8,8,8,55,55,8,8,8,1,96,41,27,27,1,1,27,27,41,1,64,14, +9,9,1,15,15,1,64,254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,191,10,5,4,6,44,45,5, +4,4,11,191,1,27,27,41,254,192,41,27,27,1,9,9,14,18,9,81,14,22,112,9,9,14,14,9,9,64,0,0, +0,3,0,0,255,224,2,0,1,160,0,28,0,55,0,82,0,0,1,35,39,38,39,35,6,15,1,35,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,38,39,7,6,39,38,39,53,54,55,51,22,23,22, +15,1,22,51,54,55,54,23,22,7,55,6,7,35,38,39,38,63,1,38,35,6,7,6,39,38,55,54,55,22,23,55, +54,23,22,23,21,1,208,88,12,13,32,126,32,13,12,88,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13, +14,20,107,39,62,49,36,19,7,8,8,1,1,9,77,9,4,3,7,19,22,29,39,24,15,19,16,12,27,1,9,77, +9,4,3,7,19,22,29,39,24,15,19,16,12,39,62,49,36,19,7,8,8,1,1,96,33,29,2,2,29,33,1,13, +14,20,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,254,241,48,1,1,32,20,6,3,4,9,77,9,1, +1,8,8,7,20,18,1,30,16,12,15,19,107,9,1,1,8,8,7,20,18,1,30,16,12,15,19,48,1,1,32,20, +6,3,4,9,77,0,0,0,0,2,0,0,255,192,1,64,1,192,0,47,0,58,0,0,19,22,23,22,23,22,7,6, +39,38,39,21,54,55,54,23,22,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,54,55,54,55,53,52, +55,54,51,50,23,22,29,1,7,6,7,49,6,7,22,23,22,23,53,224,47,36,11,2,1,7,21,24,20,25,25,20, +24,21,15,22,36,47,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9,14,14,9,9,64,42,27,26,1,1, +26,27,42,1,125,8,27,9,12,13,11,22,15,15,7,247,5,16,15,22,24,21,27,8,35,14,9,9,9,9,14,35, +13,51,52,73,73,52,51,13,35,14,9,9,9,9,14,35,65,12,33,33,45,46,34,33,11,247,0,0,0,5,0,0, +255,224,2,0,1,160,0,27,0,47,0,67,0,87,0,107,0,0,19,50,23,49,22,21,17,22,23,33,50,23,22,21, +20,7,6,35,33,38,39,38,39,17,52,55,54,51,23,50,23,49,22,29,1,20,7,6,35,34,39,38,61,1,52,55, +54,51,23,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,55,50,23,49,22,29,1,20,7,6, +35,34,39,38,61,1,52,55,54,51,23,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,32,14, +9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1,9,9,14,128,14,9,9,9,9,14,14,9,9,9, +9,14,128,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9,9,14,128,9,9,14, +14,9,9,9,9,14,14,9,9,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9, +9,192,9,9,14,64,14,9,9,9,9,14,64,14,9,9,96,14,9,9,9,9,14,160,14,9,9,9,9,14,160,128, +9,9,14,96,14,9,9,9,9,14,96,14,9,9,128,14,9,9,9,9,14,224,14,9,9,9,9,14,224,0,0,0, +0,4,0,0,255,224,2,0,1,160,0,27,0,47,0,67,0,87,0,0,19,50,23,49,22,21,17,22,23,33,50,23, +22,21,20,7,6,35,33,38,39,38,39,17,52,55,54,51,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1, +34,39,38,53,23,50,23,49,22,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,23,50,23,49,22,21,20,7, +6,43,1,34,39,38,53,52,55,54,59,1,32,14,9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1, +9,9,14,96,9,9,14,96,14,9,9,9,9,14,96,14,9,9,224,14,9,9,9,9,14,128,14,9,9,9,9,14, +128,96,14,9,9,9,9,14,64,14,9,9,9,9,14,64,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1, +22,23,34,1,80,14,9,9,96,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14, +9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,5,0,0,255,224,2,0,1,160,0,8,0,13,0,19, +0,28,0,42,0,0,1,55,38,35,34,43,1,7,51,35,55,35,7,51,37,7,51,53,38,39,37,35,6,7,6,7, +21,51,55,3,22,23,49,22,23,33,54,55,54,55,53,33,21,1,70,128,1,1,2,2,86,128,92,160,128,92,128,92, +1,76,104,118,1,13,254,148,70,27,18,18,1,6,128,134,1,18,18,27,1,128,27,18,18,1,254,0,1,32,127,1, +128,128,128,104,104,64,23,17,24,1,18,18,27,64,128,254,128,27,18,18,1,1,18,18,27,224,224,0,0,1,0,0, +255,224,1,192,1,160,0,136,0,0,19,23,22,63,1,54,51,22,23,22,23,21,20,15,1,6,23,20,23,22,51,50, +21,22,63,1,54,59,1,22,23,22,23,20,15,1,6,31,1,22,21,6,7,6,7,35,34,47,1,38,7,34,7,6, +21,6,31,1,22,29,1,6,7,6,7,34,47,1,38,15,1,6,35,38,39,38,39,53,52,63,1,54,39,34,53,52, +39,38,35,38,15,1,6,43,1,38,39,38,39,52,63,1,54,47,1,38,53,54,55,54,55,51,50,31,1,22,55,52, +51,50,55,54,53,52,51,54,47,1,38,61,1,54,55,54,55,50,23,217,1,6,6,1,19,25,26,17,17,1,9,19, +2,1,2,1,1,1,2,3,31,16,18,5,26,17,17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2, +1,2,2,1,2,19,9,1,17,17,26,25,19,1,6,6,1,19,25,26,17,17,1,9,19,2,1,1,1,2,1,2, +3,31,16,18,5,26,17,17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,1,1,1,1,1,2, +19,9,1,17,17,26,25,19,1,142,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,2,1,1,1,2,19, +9,1,17,17,26,25,19,1,6,6,1,19,25,26,17,17,1,9,19,2,1,2,2,1,2,3,31,16,18,5,26,17, +17,1,18,1,5,5,1,18,1,17,17,26,5,18,16,31,3,2,1,1,1,2,1,2,19,9,1,17,17,26,25,19, +1,6,6,1,19,25,26,17,17,1,9,19,2,1,1,1,1,1,1,2,3,31,16,18,5,26,17,17,1,18,0,0, +0,4,0,0,255,192,2,0,1,192,0,44,0,58,0,103,0,112,0,0,5,6,7,6,47,1,38,53,52,63,1,54, +23,22,23,21,51,54,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,6,7,6,7,35, +21,19,52,39,49,38,35,34,7,6,21,22,23,54,55,37,54,55,54,31,1,22,21,20,15,1,6,39,38,39,53,35, +6,7,6,7,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,54,55,54,55,51,53,3,22,23,54, +55,38,39,6,7,1,64,1,13,15,11,80,8,8,80,11,15,13,1,16,27,18,18,1,22,13,13,1,22,23,34,34, +23,22,1,13,13,22,1,36,37,54,16,136,7,7,10,10,7,7,2,22,22,2,254,248,1,13,14,12,80,8,8,80, +12,14,13,1,16,27,18,18,1,22,13,13,1,22,23,34,34,23,22,1,13,13,22,1,36,37,54,16,136,2,22,22, +2,2,22,22,2,40,15,7,6,10,72,7,11,11,7,72,10,6,7,15,40,1,18,18,27,167,10,19,19,25,34,23, +22,1,1,22,23,34,25,19,19,10,167,54,37,36,1,40,1,153,10,7,7,7,7,10,23,1,1,23,55,15,7,6, +10,72,7,11,11,7,72,10,6,7,15,40,1,18,18,27,167,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20, +9,167,54,37,36,1,40,254,104,22,2,2,22,22,2,2,22,0,0,0,0,4,0,0,255,192,1,192,1,192,0,75, +0,84,0,93,0,102,0,0,19,20,7,49,6,7,21,20,23,22,59,1,50,55,54,61,1,38,39,38,53,54,55,54, +55,22,23,22,23,20,7,6,7,21,6,7,6,7,35,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55, +53,35,38,39,38,39,53,38,39,38,53,54,55,54,55,22,23,22,23,49,7,54,55,38,39,6,7,22,23,33,54,55, +38,39,6,7,22,23,3,6,7,22,23,54,55,38,39,160,13,13,22,9,9,14,160,14,9,9,22,13,13,1,22,23, +34,34,23,22,1,13,13,22,1,27,27,41,48,22,13,13,1,22,23,34,34,23,22,1,13,13,22,48,41,27,27,1, +22,13,13,1,22,23,34,34,23,22,1,80,22,2,2,22,22,2,2,22,1,32,22,2,2,22,22,2,2,22,144,22, +2,2,22,22,2,2,22,1,112,25,19,19,10,39,14,9,9,9,9,14,39,10,19,19,25,34,23,22,1,1,22,23, +34,25,19,19,10,39,41,27,27,1,71,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,71,1,27,27,41, +39,10,19,19,25,34,23,22,1,1,22,23,34,24,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,254,208, +2,22,22,2,2,22,22,2,0,5,0,0,255,192,2,0,1,192,0,45,0,54,0,90,0,99,0,108,0,0,1,22, +23,21,51,22,23,22,23,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,38,39,38,39,35,21,6, +7,6,47,1,38,53,52,63,1,54,23,49,19,54,55,38,39,6,7,22,23,37,22,23,49,22,21,6,7,6,7,38, +39,38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,3,6,7,22,23,54,55, +38,39,17,6,7,22,23,54,55,38,39,1,50,13,1,16,54,37,36,1,22,13,13,1,22,23,34,34,23,22,1,13, +13,22,1,18,18,27,16,1,13,15,11,80,8,8,80,11,15,126,22,2,2,22,22,2,2,22,254,192,22,13,13,1, +22,23,34,34,23,22,1,13,13,22,22,13,13,1,22,23,34,34,23,22,1,13,13,22,32,22,2,2,22,22,2,2, +22,22,2,2,22,22,2,2,22,1,190,7,15,40,1,36,37,54,167,9,20,19,25,34,23,22,1,1,22,23,34,25, +19,20,9,167,27,18,18,1,40,15,7,6,10,72,7,11,11,7,72,10,6,254,58,2,22,22,2,2,22,22,2,97, +9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1,22,23,34,25,19,19, +10,206,1,47,2,22,22,2,2,22,22,2,254,160,2,22,22,2,2,22,22,2,0,0,0,3,0,0,255,193,1,64, +1,191,0,69,0,78,0,86,0,0,19,22,23,55,54,55,54,23,22,23,22,15,1,22,23,22,23,22,7,6,39,7, +54,55,54,23,22,7,6,15,1,6,7,6,39,38,39,38,63,1,38,39,7,6,7,6,39,38,39,38,63,1,38,39, +38,53,54,55,54,63,1,54,55,54,23,22,23,22,15,2,6,7,49,6,21,22,23,55,23,55,38,39,7,22,23,49, +217,14,14,11,4,11,12,13,13,6,7,3,16,3,1,11,2,1,7,10,16,53,18,16,24,21,15,22,39,51,10,4, +11,10,14,13,7,6,2,8,14,14,13,4,11,10,14,13,6,7,3,18,31,18,18,1,42,41,66,10,4,11,12,13, +13,6,7,3,6,86,30,18,19,1,20,46,37,62,14,15,61,13,15,1,126,1,4,47,13,6,7,3,4,11,10,14, +60,1,1,9,12,13,11,13,1,218,7,12,15,22,24,21,29,7,42,13,6,7,3,4,11,10,14,28,3,5,52,13, +6,7,3,4,11,10,14,71,26,38,37,44,70,51,51,15,45,13,6,7,3,4,11,10,14,26,77,16,30,30,37,40, +31,184,239,248,5,1,245,6,3,0,0,0,0,1,0,0,255,224,1,128,1,160,0,71,0,0,55,53,54,55,54,51, +50,23,54,51,50,31,1,22,23,22,7,6,7,6,47,1,38,35,6,7,21,54,55,54,23,22,23,22,7,6,7,6, +7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,7,6,7,6,39,38,39,6,7,6,7,22,23,22, +23,49,159,1,9,9,13,13,8,16,19,27,22,10,11,2,3,7,8,13,13,11,10,6,7,21,2,62,45,10,13,13, +9,9,1,1,10,61,88,63,50,51,29,30,1,1,30,29,51,50,63,88,61,10,1,1,9,9,13,13,10,45,62,68, +46,45,2,1,26,27,42,45,147,14,9,9,7,7,15,6,8,13,12,12,11,2,3,7,7,4,2,21,105,1,40,9, +1,1,10,10,13,12,9,56,2,1,30,29,51,50,63,63,50,51,29,30,1,2,55,9,13,13,10,10,1,1,9,40, +1,2,45,45,68,50,38,39,20,0,0,0,0,2,0,0,255,192,2,64,1,192,0,34,0,39,0,0,1,33,6,7, +6,7,17,22,23,22,23,51,7,35,6,7,22,23,33,54,55,38,39,35,39,51,54,55,54,55,17,38,39,38,39,3, +33,17,33,17,2,16,254,32,20,14,13,1,1,13,14,20,192,16,72,22,2,2,22,1,16,22,2,2,22,72,16,192, +20,14,13,1,1,13,14,20,16,254,64,1,192,1,192,1,13,14,20,254,192,20,14,13,1,48,2,22,22,2,2,22, +22,2,48,1,13,14,20,1,64,20,14,13,1,254,160,1,32,254,224,0,0,3,0,0,255,192,1,128,1,160,0,48, +0,66,0,86,0,0,1,50,23,49,22,21,20,7,6,35,17,20,7,6,35,38,39,6,35,38,39,38,39,54,55,54, +55,50,23,53,35,34,39,38,53,52,55,54,59,1,52,55,54,51,50,23,22,21,49,7,38,39,49,38,39,6,7,6, +7,22,23,22,23,54,55,54,55,23,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,1,64,14, +9,9,9,9,14,9,9,14,21,8,30,37,54,37,36,1,1,36,37,54,35,29,32,14,9,9,9,9,14,32,9,9, +14,14,9,9,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,96,14,9,9,9,9,14,254,192,14,9, +9,9,9,14,1,64,1,128,9,9,14,14,9,9,255,0,14,9,9,1,18,19,1,36,37,54,54,37,36,1,17,49, +9,9,14,14,9,9,14,9,9,9,9,14,224,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,9,9, +14,14,9,9,9,9,14,14,9,9,0,0,0,7,0,0,255,192,2,0,1,192,0,13,0,27,0,48,0,66,0,84, +0,97,0,110,0,0,19,51,50,55,54,47,1,38,15,1,6,23,22,51,37,22,63,1,54,39,38,43,1,34,7,6, +31,2,33,6,7,6,7,21,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7, +38,39,38,39,54,55,54,55,35,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,23,35,53,54,55,54, +55,51,22,23,22,23,21,51,35,53,54,55,54,55,51,22,23,22,23,21,79,130,10,4,3,6,65,11,11,65,6,3, +4,10,1,22,11,11,65,6,3,5,9,130,10,4,3,6,65,91,254,128,27,18,18,1,1,18,18,27,1,128,27,18, +18,1,1,18,18,27,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,192,20,14,13,1,1,13,14,20, +20,14,13,1,1,13,14,20,80,160,1,13,14,20,64,20,14,13,1,192,160,1,13,14,20,64,20,14,13,1,1,96, +9,8,7,68,8,8,68,7,8,9,4,8,8,68,7,8,9,9,8,7,68,36,1,18,18,26,255,29,18,18,1,1, +18,18,26,1,1,27,18,18,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,224,48,20,14,13,1,1,13,14,20,48,48,20,14,13,1,1,13,14,20,48,0, +0,3,0,0,255,192,2,64,1,192,0,24,0,42,0,67,0,0,19,54,55,33,22,23,22,15,1,6,7,6,7,22, +23,38,47,1,38,61,1,39,38,55,49,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,4,11,25,1,176,25,11,10,16,106, +61,39,40,1,1,18,3,2,64,13,183,15,10,1,27,2,41,41,61,61,41,40,2,2,40,41,61,61,41,41,2,204, +10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,169,22,1,1,22,23,19, +131,13,47,47,65,41,36,2,1,48,10,16,79,224,19,23,254,167,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,1,0,0, +255,224,1,128,1,160,0,57,0,0,1,50,23,49,22,21,20,7,6,43,1,6,15,1,51,50,23,22,21,20,7,6, +43,1,7,6,7,6,43,1,34,39,38,53,52,55,54,59,1,54,63,1,35,34,39,38,53,52,55,54,59,1,55,54, +55,54,59,1,1,96,14,9,9,9,9,14,37,21,9,45,80,14,9,9,9,9,14,107,55,12,23,24,30,37,14,9, +9,9,9,14,37,21,9,45,80,14,9,9,9,9,14,107,55,11,24,24,30,37,1,160,9,9,14,14,9,9,1,19, +108,9,9,14,14,9,9,133,27,16,16,9,9,14,14,9,9,1,19,108,9,9,14,14,9,9,133,27,16,16,0,0, +0,2,0,0,255,224,2,0,1,160,0,14,0,28,0,0,1,35,39,35,6,7,6,7,21,33,53,38,39,38,39,1, +22,23,49,22,23,33,54,55,54,55,53,33,21,1,208,192,64,160,20,14,13,1,2,0,1,13,14,20,254,48,1,13, +14,20,1,160,20,14,13,1,254,0,1,96,64,1,13,14,20,80,16,20,14,13,1,254,176,20,14,13,1,1,13,14, +20,240,240,0,0,1,0,0,255,224,1,64,1,160,0,58,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,50, +23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,34,39, +38,53,52,55,54,59,1,17,52,55,54,59,1,1,32,14,9,9,9,9,14,176,144,14,9,9,9,9,14,144,80,14, +9,9,9,9,14,80,9,9,14,14,9,9,16,14,9,9,9,9,14,16,9,9,14,208,1,160,9,9,14,14,9,9, +96,9,9,14,14,9,9,64,9,9,14,14,9,9,64,14,9,9,9,9,14,64,9,9,14,14,9,9,1,0,14,9, +9,0,0,0,0,3,0,0,255,192,1,128,1,192,0,51,0,62,0,70,0,0,19,21,22,23,22,21,20,7,6,39, +34,39,38,39,21,51,50,23,22,21,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,54,55,54,55, +53,52,55,54,51,50,23,22,21,49,7,6,7,49,6,7,22,23,22,23,53,23,54,55,49,54,55,35,21,224,60,42, +10,9,10,13,12,10,24,34,128,14,9,9,1,45,44,70,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9, +14,14,9,9,64,42,27,26,1,1,26,27,42,64,34,24,25,8,91,1,160,35,11,41,10,12,13,10,10,1,8,24, +9,92,9,9,14,73,52,51,13,35,14,9,9,9,9,14,35,13,51,52,73,73,52,51,13,35,14,9,9,9,9,14, +100,11,34,33,46,46,33,33,11,247,247,8,25,24,34,91,0,3,0,0,255,224,2,64,1,160,0,50,0,57,0,62, +0,0,1,35,53,38,39,6,7,21,33,34,7,6,29,1,20,23,22,51,22,23,22,15,1,6,23,22,23,51,54,63, +1,51,50,55,54,63,1,51,50,63,1,51,50,55,54,61,1,52,39,38,35,7,6,43,1,55,51,7,55,33,53,33, +21,2,32,16,2,22,22,2,254,75,18,12,13,13,12,18,17,9,9,4,41,4,9,10,16,104,23,8,27,95,18,15, +14,6,25,36,13,9,23,64,14,9,9,9,9,14,215,3,5,82,17,92,19,151,254,96,1,160,1,128,8,22,2,2, +22,8,13,12,18,90,18,12,13,1,12,12,16,158,16,12,12,1,1,22,105,11,10,17,74,9,23,9,9,14,80,14, +9,9,235,5,64,59,139,32,32,0,0,0,0,5,0,0,255,192,2,0,1,192,0,10,0,25,0,101,0,116,0,142, +0,0,1,54,55,53,38,39,6,7,21,22,23,51,50,63,1,54,53,38,39,34,15,1,6,21,22,23,19,53,54,39, +38,39,34,7,6,29,1,39,38,35,6,7,20,31,1,22,21,20,7,6,35,34,47,1,38,35,6,7,20,31,1,22, +21,20,7,6,35,34,47,1,38,35,6,7,20,31,1,22,21,20,7,6,35,34,47,1,38,35,6,7,20,23,22,23, +22,23,22,51,54,55,54,55,3,22,51,54,55,52,47,1,38,35,6,7,20,31,2,34,7,49,6,29,1,39,21,6, +7,6,7,6,7,22,51,54,55,54,55,53,52,39,38,35,1,64,15,1,1,15,15,1,1,15,63,9,5,32,3,2, +14,8,5,33,3,2,14,1,1,7,6,20,14,9,9,151,7,10,22,2,7,90,4,4,5,6,6,4,108,7,10,22, +2,7,108,4,4,5,6,6,4,90,7,10,22,2,7,90,4,4,5,6,6,4,53,7,10,22,2,7,23,19,55,39, +40,49,66,42,43,1,141,5,9,14,2,3,33,5,9,14,2,3,33,237,14,9,9,32,1,16,16,18,19,8,11,11, +66,42,43,1,9,9,14,1,96,1,15,64,15,1,1,15,64,15,1,7,48,4,5,15,1,7,48,4,5,15,1,254, +250,164,6,14,13,1,9,9,13,77,151,7,3,21,10,7,90,4,6,6,5,4,4,108,7,2,22,9,8,107,5,5, +6,5,4,4,89,7,3,21,10,7,89,5,6,6,4,5,5,52,7,2,22,9,8,23,20,58,29,29,2,44,44,64, +1,13,7,1,15,5,4,48,7,1,15,5,4,48,71,9,9,14,76,32,122,46,32,32,18,18,6,2,2,44,44,64, +166,14,9,9,0,3,0,0,255,192,2,64,1,192,0,33,0,51,0,67,0,0,37,6,7,49,6,7,35,23,6,7, +6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,37,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,7,6,7,49,6,7,22,23,51,54,55,38,39,38,39,35,2,64,1,9,9,13, +32,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,254,224,27,18,18,1, +1,18,18,27,27,18,18,1,1,18,18,27,32,34,23,22,1,1,15,192,15,1,1,22,23,34,64,192,13,9,9,1, +160,27,18,18,1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,225,10,14,96,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,160,1,22,23,34,15,1,1,15,34,23,22,1,0,0,0,0,1,0,0,255,225,1,64, +1,160,0,70,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,22,23,51,50,23,22,21,20,7,6, +43,1,6,7,6,7,23,22,23,22,7,6,7,6,47,1,38,55,54,55,51,50,55,54,55,35,34,39,38,53,52,55, +54,59,1,38,39,38,43,1,34,39,38,53,49,0,9,9,14,1,0,14,9,9,9,9,14,56,14,6,36,14,9,9, +9,9,14,36,10,33,33,46,145,10,2,3,8,8,13,12,12,224,17,6,8,22,80,25,19,20,9,153,14,9,9,9, +9,14,153,9,20,19,25,80,14,9,9,1,128,14,9,9,9,9,14,14,9,9,22,26,9,9,14,14,9,9,44,30, +30,7,102,9,13,12,12,10,2,3,8,160,15,21,21,1,13,13,22,9,9,14,14,9,9,22,13,13,9,9,14,0, +0,1,0,0,255,224,1,128,1,160,0,60,0,0,55,51,50,23,22,21,20,7,6,43,1,23,22,23,22,7,6,7, +6,47,1,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,50,23,22,29, +1,55,54,23,22,23,22,7,6,15,1,183,169,14,9,9,9,9,14,169,158,10,1,1,9,9,13,12,11,171,9,9, +14,14,9,9,32,14,9,9,9,9,14,32,9,9,14,14,9,9,171,11,12,13,9,9,1,1,10,158,224,9,9,14, +14,9,9,136,9,13,12,11,10,1,1,9,146,122,14,9,9,9,9,14,160,9,9,14,14,9,9,160,14,9,9,9, +9,14,122,146,9,1,1,10,11,12,13,9,136,0,0,0,0,1,0,0,255,224,1,128,1,160,0,99,0,0,19,50, +23,49,22,29,1,54,51,50,23,53,52,55,54,51,50,23,22,29,1,22,23,22,23,22,7,6,7,6,39,38,39,38, +39,21,20,7,6,35,34,39,38,61,1,34,35,34,35,34,35,34,35,21,20,7,6,35,34,39,38,61,1,6,7,22, +23,22,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55,53,52,55,54, +51,49,144,14,9,9,8,8,8,8,9,9,14,14,9,9,42,28,28,10,3,7,8,13,13,11,11,3,10,35,9,9, +14,14,9,9,5,5,3,3,3,3,5,5,9,9,14,14,9,9,46,2,1,36,37,54,160,14,9,9,9,9,14,254, +192,14,9,9,9,9,14,17,47,2,1,30,31,50,9,9,14,1,160,9,9,14,33,1,1,33,14,9,9,9,9,14, +49,20,35,36,46,12,11,11,3,3,7,7,14,45,29,68,14,9,9,9,9,14,96,96,14,9,9,9,9,14,68,37, +63,54,37,36,1,9,9,14,14,9,9,9,9,14,14,9,9,53,75,59,46,46,24,49,14,9,9,0,0,1,0,0, +255,224,1,128,1,160,0,46,0,0,63,1,54,23,22,23,22,7,6,15,1,21,51,50,23,22,21,20,7,6,35,33, +34,39,38,61,1,7,6,39,38,39,38,55,54,63,1,53,52,55,54,51,50,23,22,29,1,128,119,13,12,11,4,3, +6,6,13,137,224,14,9,9,9,9,14,255,0,14,9,9,23,13,12,11,4,3,6,6,13,41,9,9,14,14,9,9, +253,34,3,6,6,13,13,12,11,4,39,154,9,9,14,14,9,9,9,9,14,168,7,3,6,6,13,13,12,11,4,11, +150,14,9,9,9,9,14,131,0,1,0,0,255,224,1,128,1,160,0,56,0,0,19,21,22,23,22,23,21,20,7,6, +35,34,39,38,61,1,38,39,38,39,17,20,7,6,35,34,39,38,53,17,6,7,6,7,21,20,7,6,35,34,39,38, +61,1,54,55,54,55,53,52,55,54,51,50,23,22,21,224,70,44,45,1,9,9,14,14,9,9,1,26,27,42,9,9, +14,14,9,9,42,27,26,1,9,9,14,14,9,9,1,45,44,70,9,9,14,14,9,9,1,128,35,13,51,52,73,160, +14,9,9,9,9,14,160,46,33,34,11,254,228,14,9,9,9,9,14,1,28,11,34,33,46,160,14,9,9,9,9,14, +160,73,52,51,13,35,14,9,9,9,9,14,0,6,0,0,0,0,2,128,1,128,0,36,0,49,0,63,0,74,0,85, +0,96,0,0,1,23,22,59,1,22,23,22,23,21,6,7,6,15,1,6,7,38,47,1,38,39,38,39,53,54,55,54, +55,51,50,63,1,54,51,50,23,1,38,39,53,35,6,7,21,20,23,22,31,1,37,53,38,39,35,21,6,7,55,54, +55,54,53,49,37,51,54,55,38,39,35,6,7,22,23,21,6,7,22,23,51,54,55,38,39,35,23,51,54,55,38,39, +35,6,7,22,23,1,140,38,24,29,97,24,16,15,1,1,24,25,41,108,53,68,68,53,108,41,25,24,1,1,15,16, +24,97,29,25,37,34,42,42,34,254,248,35,1,40,7,1,15,15,25,29,1,204,1,7,40,1,35,30,24,15,15,254, +128,224,15,1,1,15,224,15,1,1,15,15,1,1,15,224,15,1,1,15,224,32,160,15,1,1,15,160,15,1,1,15, +1,105,25,16,1,15,16,24,85,42,32,32,11,27,33,2,2,33,27,11,32,32,42,85,24,16,15,1,16,25,23,23, +254,253,53,69,48,1,7,85,25,19,19,7,7,77,85,7,1,48,69,53,7,7,19,19,25,45,1,15,15,1,1,15, +15,1,32,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,1,0,0,255,193,1,128,1,191,0,80, +0,0,1,22,23,49,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,34,15,1,21,20,7,6,35,38,39, +7,6,7,6,39,38,39,38,63,1,53,38,39,38,39,6,7,6,7,21,20,7,6,35,34,39,38,53,17,52,55,54, +51,22,23,54,51,22,23,54,63,1,54,55,54,23,22,23,22,15,1,1,27,43,29,28,1,9,9,14,14,9,9,1, +13,14,20,6,6,36,9,9,14,20,8,22,5,11,12,13,12,6,5,4,78,1,13,14,20,20,14,13,1,9,9,14, +14,9,9,9,9,14,17,9,24,30,48,32,8,7,35,5,11,12,13,12,6,5,4,19,1,95,5,30,31,45,208,14, +9,9,9,9,14,208,20,14,13,1,2,100,154,14,9,9,2,15,60,12,6,5,4,5,11,12,13,218,43,20,14,13, +1,1,13,14,20,208,14,9,9,9,9,14,1,32,14,9,9,1,13,14,1,33,8,6,95,12,6,5,4,5,11,12, +13,54,0,0,0,7,0,0,255,224,2,128,1,160,0,21,0,28,0,35,0,43,0,51,0,69,0,91,0,0,19,54, +55,49,54,55,33,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23,51,38,39,38,39,21,53,21,54,55,54, +55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7,49,6,7,22,23,22,23,54,55,54,55, +38,39,38,39,5,22,23,49,22,23,33,22,23,6,7,33,38,39,38,39,53,54,55,22,23,21,96,1,18,18,27,1, +160,27,18,18,1,1,18,18,27,254,96,27,18,18,1,64,64,1,18,18,27,27,18,18,1,64,1,160,27,18,18,1, +64,64,1,18,18,27,64,144,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,192,1,20,20,31,1,144, +22,2,2,22,254,112,51,34,34,1,2,22,22,2,1,96,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18, +27,224,224,27,18,18,1,64,224,64,1,18,18,27,160,1,18,18,27,64,160,27,18,18,1,64,32,1,22,23,34,34, +23,22,1,1,22,23,34,34,23,22,1,232,31,20,20,1,2,22,22,2,1,34,34,51,240,22,2,2,22,240,0,0, +0,3,0,0,255,224,1,192,1,160,0,54,0,58,0,62,0,0,37,51,53,52,55,54,51,50,23,22,29,1,51,50, +23,22,21,20,7,6,43,1,21,6,7,6,47,1,35,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55, +54,59,1,53,54,55,54,31,3,53,35,47,1,21,51,1,7,57,9,9,14,14,9,9,32,14,9,9,9,9,14,32, +1,22,22,14,97,100,9,9,14,14,9,9,32,14,9,9,9,9,14,32,1,22,22,14,140,42,15,15,119,58,58,192, +192,14,9,9,9,9,14,192,9,9,14,14,9,9,128,23,8,5,18,146,128,14,9,9,9,9,14,128,9,9,14,14, +9,9,192,23,8,5,18,210,64,22,22,64,86,86,0,0,0,5,0,0,255,192,1,128,1,192,0,20,0,24,0,28, +0,32,0,36,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,39,51,7, +23,7,17,19,55,23,35,55,39,55,17,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14, +20,54,90,89,179,218,90,90,39,89,90,179,217,89,89,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1, +160,20,14,13,1,64,134,134,58,134,134,1,12,254,186,134,134,58,134,134,254,244,0,0,0,3,0,0,255,225,2,128, +1,127,0,27,0,45,0,70,0,0,1,6,35,49,34,39,38,7,6,7,17,22,23,22,55,54,51,50,23,22,55,54, +55,17,38,39,38,7,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,5,38,35,34,7,6,39,38, +63,1,54,51,50,31,1,55,54,51,50,31,1,22,7,6,39,2,66,127,131,131,127,24,19,18,1,1,18,18,25,127, +131,131,127,24,18,19,1,1,18,19,24,254,62,14,9,9,9,9,14,14,9,9,9,9,14,1,90,76,78,76,74,11, +6,5,6,49,5,8,8,5,32,94,5,8,8,5,109,6,6,5,11,1,126,38,38,6,14,13,25,254,192,25,13,14, +6,38,38,6,14,13,26,1,63,25,13,14,6,158,9,9,14,14,9,9,9,9,14,14,9,9,165,13,12,1,8,9, +9,68,7,7,44,139,8,7,165,10,8,8,1,0,0,0,0,3,0,0,255,224,1,128,1,160,0,44,0,53,0,61, +0,0,19,22,23,49,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,34,39,38,53,52,55,54,51,53,52,55,54,59,1,23,38,39,49,38,39,35,21,51,7,21,51,54,55,54,55,35, +192,59,43,42,13,3,14,9,9,9,9,14,3,13,42,43,59,96,9,9,14,14,9,9,14,9,9,9,9,14,9,9, +14,128,91,11,24,24,32,96,187,187,96,32,24,24,11,187,1,160,1,36,35,56,9,9,14,14,9,9,56,35,36,1, +96,14,9,9,9,9,14,224,9,9,14,14,9,9,96,14,9,9,128,28,18,17,1,64,64,64,1,17,18,28,0,0, +0,4,0,0,255,224,1,128,1,160,0,67,0,73,0,81,0,87,0,0,19,22,23,49,22,23,51,50,23,22,21,20, +7,6,43,1,22,21,20,7,51,50,23,22,21,20,7,6,43,1,6,7,6,7,35,21,20,7,6,35,34,39,38,61, +1,34,39,38,53,52,55,54,51,53,34,39,38,53,52,55,54,51,53,52,55,54,59,1,23,38,39,35,21,51,7,21, +51,54,53,52,39,35,23,35,21,51,54,55,176,52,41,41,23,19,14,9,9,9,9,14,1,1,1,1,14,9,9,9, +9,14,19,23,41,41,52,80,9,9,14,14,9,9,14,9,9,9,9,14,14,9,9,9,9,14,9,9,14,112,78,31, +47,80,158,158,191,1,1,191,158,158,80,47,31,1,160,1,26,26,43,9,9,14,14,9,9,8,8,8,8,9,9,14, +14,9,9,43,26,26,1,64,14,9,9,9,9,14,160,9,9,14,14,9,9,32,9,9,14,14,9,9,64,14,9,9, +96,31,1,32,64,32,8,8,8,8,96,32,1,31,0,0,0,1,0,0,255,192,2,0,1,192,0,49,0,0,19,54, +55,49,54,55,22,23,22,23,21,23,22,29,1,20,7,6,47,1,21,23,22,29,1,6,7,34,35,39,7,34,35,38, +39,53,52,63,1,53,7,6,39,38,61,1,52,63,1,53,192,1,18,18,27,28,18,17,1,178,14,7,6,8,171,58, +6,1,14,1,2,110,110,2,2,13,1,6,58,171,8,6,7,14,178,1,98,29,31,31,3,3,31,31,29,66,119,9, +17,57,8,5,4,3,57,81,43,4,9,41,14,1,32,32,1,14,41,9,4,43,81,57,3,4,5,8,57,17,9,119, +66,0,0,0,0,4,0,0,255,192,2,0,1,160,0,35,0,47,0,73,0,86,0,0,19,52,55,49,54,59,1,22, +23,22,23,6,7,6,7,23,22,7,6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55, +54,55,38,39,38,39,35,21,37,22,23,49,22,23,6,7,6,7,35,21,20,7,6,35,34,39,38,53,17,52,55,54, +59,1,23,38,39,49,38,39,35,21,51,54,55,54,55,0,9,9,14,80,61,41,40,2,1,23,23,39,52,4,5,5, +12,13,12,11,6,56,42,9,9,14,14,9,9,64,48,34,23,22,1,1,22,23,34,48,1,80,48,31,32,1,1,32, +31,48,48,9,9,14,14,9,9,9,9,14,80,48,1,13,14,20,48,48,20,14,13,1,1,128,14,9,9,2,40,41, +61,45,35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34,23,22, +1,160,96,1,32,31,48,48,31,32,1,96,14,9,9,9,9,14,1,32,14,9,9,112,20,14,13,1,96,1,13,14, +20,0,0,0,0,1,0,0,255,224,2,64,1,160,0,55,0,0,1,20,7,49,6,43,1,21,20,7,6,43,1,21, +20,7,6,43,1,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,53,52,55,54,59,1,53,52,55,54,59,1, +53,52,55,54,59,1,50,23,22,21,2,64,9,9,14,96,9,9,14,96,9,9,14,96,9,9,14,128,14,9,9,9, +9,14,96,9,9,14,96,9,9,14,96,9,9,14,128,14,9,9,1,128,14,9,9,96,14,9,9,96,14,9,9,96, +14,9,9,9,9,14,14,9,9,96,14,9,9,96,14,9,9,96,14,9,9,9,9,14,0,4,0,0,255,208,2,128, +1,176,0,75,0,84,0,93,0,102,0,0,55,33,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21, +51,50,23,22,21,20,7,6,35,33,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,33,34,39,38, +53,52,55,54,59,1,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,39,54,55,38,39,6,7,22, +23,37,6,7,22,23,54,55,38,39,3,54,55,38,39,6,7,22,23,160,1,64,22,13,13,1,22,23,34,34,23,22, +1,13,13,22,64,14,9,9,9,9,14,255,0,22,13,13,1,22,23,34,34,23,22,1,13,13,22,255,0,14,9,9, +9,9,14,64,22,13,13,1,22,23,34,34,23,22,1,13,13,22,32,22,2,2,22,22,2,2,22,1,128,22,2,2, +22,22,2,2,22,192,22,2,2,22,22,2,2,22,224,55,10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10, +55,9,9,14,14,9,9,55,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,55,9,9,14,14,9,9,55, +10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10,55,104,2,22,22,2,2,22,22,2,48,2,22,22,2,2, +22,22,2,254,144,2,22,22,2,2,22,22,2,0,0,0,0,4,0,0,255,192,2,0,1,192,0,39,0,49,0,67, +0,85,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,21,20,7,6,43,1,34,39,38,61,1,33,21,20, +7,6,43,1,34,39,38,61,1,38,39,17,23,7,33,39,38,39,35,6,7,49,7,34,7,49,6,21,20,23,22,51, +50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,0,1,22,23,34,1, +96,34,23,22,1,1,31,9,9,14,32,14,9,9,255,0,9,9,14,32,14,9,9,31,1,130,18,1,32,18,7,24, +191,23,7,34,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,1,112, +34,23,22,1,1,22,23,34,254,224,41,23,48,14,9,9,9,9,14,32,32,14,9,9,9,9,14,48,23,41,1,32, +72,72,72,23,1,1,23,136,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,1,0,0,255,224,1,128,1,160,0,80,0,0,19,50,23,49,22,29,1,55,54,23,22,23,22,7, +6,15,1,21,55,54,23,22,23,22,7,6,15,1,21,51,54,55,54,55,53,54,55,54,51,22,23,22,7,23,6,7, +6,7,35,34,39,38,61,1,7,6,39,38,39,38,55,54,63,1,53,7,6,39,38,39,38,55,54,63,1,53,52,55, +54,51,49,96,14,9,9,119,13,12,11,4,3,6,6,13,137,119,13,12,11,4,3,6,6,13,137,64,52,36,36,4, +1,10,9,14,13,9,8,1,1,6,54,54,78,96,14,9,9,23,13,12,11,4,3,6,6,13,41,23,13,12,11,4, +3,6,6,13,41,9,9,14,1,160,9,9,14,35,34,3,6,6,13,13,12,11,4,39,29,34,3,6,6,13,13,12, +11,4,39,154,1,34,34,53,8,13,9,8,1,10,9,14,8,78,51,51,2,9,9,14,168,7,3,6,6,13,13,12, +11,4,11,30,7,3,6,6,13,13,12,11,4,11,54,14,9,9,0,0,0,4,0,0,255,192,2,64,1,192,0,17, +0,47,0,65,0,84,0,0,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,37,22,23,49,22,23, +17,6,7,6,7,35,7,35,39,35,7,35,39,35,38,39,38,39,17,54,55,54,55,33,1,54,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,23,37,54,55,38,39,38,39,6,7,6,7,22,23,21,22,23,54,55,53,144,1,22, +23,34,34,23,22,1,1,22,23,34,34,23,22,1,1,112,27,18,18,1,1,18,18,27,16,16,64,16,224,16,64,16, +16,27,18,18,1,1,18,18,27,1,192,254,224,68,45,45,2,2,45,45,68,68,45,45,2,2,45,45,68,1,0,30, +2,1,13,14,20,20,14,13,1,2,30,1,15,15,1,208,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +240,1,18,18,27,254,160,27,18,18,1,32,32,32,32,1,18,18,27,1,96,27,18,18,1,254,112,2,45,45,68,68, +45,45,2,2,45,45,68,68,45,45,2,179,12,33,20,14,13,1,1,13,14,20,33,12,115,15,1,1,15,115,0,0, +0,5,0,0,255,192,2,32,1,192,0,24,0,46,0,51,0,76,0,101,0,0,19,54,51,50,31,2,22,21,20,15, +2,6,35,34,47,2,38,53,52,63,2,23,54,51,49,50,31,1,22,21,20,7,1,6,35,34,47,1,38,53,52,55, +1,23,7,23,55,39,5,63,1,54,51,50,31,2,22,21,20,15,2,6,35,34,47,2,38,53,52,55,1,63,1,54, +51,50,31,2,22,21,20,15,2,6,35,34,47,2,38,53,52,55,249,2,5,5,2,14,38,5,5,38,14,2,5,5, +2,14,39,4,4,39,14,178,15,19,20,14,35,14,14,254,131,15,19,20,14,35,14,14,1,125,34,105,24,105,24,254, +58,57,21,3,8,8,3,21,57,7,7,57,21,3,8,8,3,21,57,7,7,1,97,56,21,3,8,8,3,21,57,7, +7,57,21,3,8,8,3,21,56,8,8,1,187,5,5,38,14,2,5,5,2,14,38,5,5,38,14,2,5,5,2,14, +38,9,14,14,35,14,20,19,15,254,131,14,14,35,14,20,19,15,1,125,45,105,24,105,24,58,21,57,7,7,57,21, +3,8,8,3,21,57,7,7,57,21,3,8,8,3,255,0,21,56,8,8,56,21,3,8,8,3,21,57,7,7,57,21, +3,8,8,3,0,2,0,0,255,192,1,255,1,192,0,10,0,107,0,0,1,6,39,38,63,1,54,23,22,15,1,39, +22,23,55,54,23,22,15,1,22,7,54,23,55,54,23,22,15,1,22,31,1,22,15,1,6,35,34,47,1,7,22,31, +1,22,15,1,6,35,34,47,1,7,22,31,1,22,15,1,6,35,34,47,1,7,6,35,34,39,38,53,52,63,1,39, +38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1, +1,160,16,17,14,14,88,17,16,15,15,88,99,7,5,46,17,16,15,15,57,7,9,31,32,59,17,16,15,15,45,8, +8,12,9,9,12,29,39,38,30,12,32,44,34,12,9,9,12,29,38,39,29,13,31,43,35,11,9,9,11,30,38,39, +29,12,69,10,13,13,10,9,9,69,10,28,28,11,12,11,11,32,5,30,10,28,28,11,11,12,10,32,6,30,10,29, +29,11,11,12,11,1,64,15,15,16,17,88,14,14,17,17,87,89,6,8,46,14,14,17,17,58,33,33,10,7,59,14, +14,17,16,47,6,8,11,12,10,12,28,28,12,31,5,33,11,11,12,11,28,28,12,32,4,33,10,13,11,11,28,28, +12,69,9,9,10,13,13,10,68,11,30,38,38,30,12,8,8,12,33,42,30,11,29,39,38,29,12,9,9,12,32,42, +30,11,29,38,39,29,12,9,9,12,0,0,0,3,0,0,255,192,1,191,1,192,0,17,0,70,0,88,0,0,1,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,31,1,22,23,22,15,1,51,50,23,22,15,1,6, +7,6,39,38,39,38,63,1,35,22,21,6,7,6,7,38,39,38,39,54,55,54,55,50,23,55,39,7,6,39,38,39, +38,55,54,63,1,3,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,160,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,243,15,18,116,22,5,4,16,38,117,15,10,9,3,32,3,10,11,13,14,7,7,3, +23,69,13,2,45,45,68,68,45,45,2,2,45,45,68,16,16,55,51,49,11,13,12,9,7,1,2,11,64,13,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +6,10,7,55,11,23,22,19,43,12,12,14,160,14,7,7,3,3,10,11,13,122,30,34,68,45,45,2,2,45,45,68, +68,45,45,2,3,54,24,37,7,1,2,11,11,13,12,9,48,254,118,1,27,27,41,41,27,27,1,1,27,27,41,41, +27,27,1,0,0,12,0,0,255,224,2,0,1,160,0,10,0,21,0,32,0,63,0,74,0,85,0,96,0,107,0,118, +0,129,0,140,0,151,0,0,19,54,55,51,22,23,6,7,35,38,39,23,22,23,6,7,35,38,39,54,55,51,7,22, +23,6,7,35,38,39,54,55,51,7,52,55,49,54,51,33,50,23,22,21,6,7,6,15,1,6,7,6,43,1,34,39, +38,47,1,38,39,38,39,49,55,54,55,51,22,23,6,7,35,38,39,35,54,55,51,22,23,6,7,35,38,47,1,22, +23,6,7,35,38,39,54,55,51,23,54,55,51,22,23,6,7,35,38,47,1,22,23,6,7,35,38,39,54,55,51,23, +54,55,51,22,23,6,7,35,38,47,1,22,23,6,7,35,38,39,54,55,51,39,22,23,6,7,35,38,39,54,55,51, +176,2,22,16,22,2,2,22,16,22,2,40,22,2,2,22,16,22,2,2,22,16,144,22,2,2,22,16,22,2,2,22, +16,72,8,8,11,1,202,11,8,8,1,29,29,48,1,2,9,9,12,232,12,9,9,1,2,48,29,29,1,224,2,22, +16,22,2,2,22,16,22,2,96,2,22,16,22,2,2,22,16,22,2,8,22,2,2,22,16,22,2,2,22,16,200,2, +22,16,22,2,2,22,16,22,2,8,22,2,2,22,16,22,2,2,22,16,104,2,22,16,22,2,2,22,16,22,2,8, +22,2,2,22,16,22,2,2,22,16,96,22,2,2,22,16,22,2,2,22,16,1,136,22,2,2,22,22,2,2,22,48, +2,22,22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,107,11,8,8,8,8,11,54,41,41,19,13,12,9,8, +8,9,12,13,19,41,41,54,83,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,96,2,22,22,2,2,22, +22,2,96,22,2,2,22,22,2,2,22,96,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,96,2,22, +22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,0,0,2,0,0,255,192,1,64,1,192,0,17,0,76,0,0, +19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,38,39,53,7,6,7,6,39,38,39,38,63,1, +54,55,50,51,50,59,1,50,51,22,23,22,31,1,22,23,22,23,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +61,1,35,21,20,7,6,35,34,39,38,61,1,112,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,22, +2,5,7,12,13,11,12,3,3,7,58,24,45,3,4,3,2,16,2,2,27,20,20,5,6,34,22,21,1,9,9,14, +56,9,9,14,14,9,9,16,9,9,14,14,9,9,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +254,178,6,24,55,8,11,3,3,7,7,12,13,11,97,39,8,3,18,17,27,33,7,26,25,36,32,14,9,9,96,14, +9,9,9,9,14,96,96,14,9,9,9,9,14,98,0,0,0,1,0,0,255,192,2,64,1,192,0,85,0,0,37,23, +6,29,1,20,7,6,43,1,34,49,38,7,38,7,34,49,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1, +20,7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31, +1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,6,7,6,7,35,2,0,1,1,12,11,17,16,1,1,1,2, +1,1,57,17,11,12,9,9,14,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0, +11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,1,9,9,13,32,160,160,4,4,16,17,11,12,1,1,1,1, +12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,94, +37,14,9,9,9,9,14,121,47,10,14,13,9,9,1,0,0,1,0,0,255,192,2,64,1,192,0,46,0,0,37,23, +6,7,6,7,35,39,55,54,47,1,38,7,6,31,1,7,6,31,1,35,38,39,38,39,53,35,38,39,38,53,52,55, +37,54,23,50,31,1,22,7,6,7,6,7,35,2,0,1,1,18,18,27,123,38,81,12,12,118,13,9,8,7,60,85, +10,6,31,102,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,1,9,9,13,32,160,160,27,18,18, +1,64,67,13,12,93,7,8,9,12,83,71,9,12,52,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,225,10, +14,13,9,9,1,0,0,0,0,2,0,0,255,192,2,64,1,192,0,33,0,62,0,0,37,6,7,49,6,7,35,23, +6,7,6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,39,53,38,39,35,6, +7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,2,64,1,9,9,13,32,1,1, +18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,255,12,1,248,1,15,48,15,1,56,15,1, +1,15,56,1,15,48,15,1,56,15,1,1,15,56,192,13,9,9,1,160,27,18,18,1,1,18,18,27,160,1,9,9, +13,14,10,224,9,1,7,225,10,14,24,56,15,1,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48,15, +1,0,0,0,0,1,0,0,255,192,1,64,1,192,0,56,0,0,19,50,23,49,22,29,1,22,23,22,23,22,7,6, +39,38,39,6,7,6,7,22,23,22,23,54,55,54,23,22,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38, +39,54,55,54,55,53,52,55,54,51,49,192,14,9,9,47,36,11,2,1,7,21,24,33,44,54,37,36,1,1,36,37, +54,44,33,24,21,15,22,36,47,9,9,14,14,9,9,70,44,45,1,1,45,44,70,9,9,14,1,192,9,9,14,35, +8,27,9,12,13,11,22,15,25,1,1,36,37,54,54,37,36,1,1,25,15,22,24,21,27,8,35,14,9,9,9,9, +14,35,13,51,52,73,73,52,51,13,35,14,9,9,0,0,0,2,0,0,255,193,1,128,1,192,0,18,0,59,0,0, +37,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,37,51,21,20,23,22,51,50,55,54,61,1,51, +50,55,54,53,52,39,38,43,1,53,52,39,38,35,34,7,6,29,1,35,34,7,6,21,20,23,22,51,1,96,254,192, +14,9,9,9,9,14,1,64,14,9,9,9,9,14,254,208,112,9,9,14,14,9,9,112,14,9,9,9,9,14,112,9, +9,14,14,9,9,112,14,9,9,9,9,14,0,9,9,14,14,8,9,9,9,13,13,9,10,240,111,14,8,9,9,9, +13,111,9,9,14,14,9,9,112,14,9,9,9,9,14,112,9,9,14,14,9,9,0,0,0,3,0,5,255,192,2,58, +1,191,0,13,0,28,0,45,0,0,1,54,55,54,23,19,22,7,6,43,1,38,39,17,7,22,23,21,6,7,35,38, +39,38,63,1,54,23,49,3,38,55,33,22,15,1,6,7,6,7,33,38,39,38,47,1,1,0,1,10,11,7,224,5, +4,5,9,224,15,1,44,11,1,1,15,128,9,5,4,4,128,7,11,206,3,18,2,22,18,3,4,12,34,33,44,254, +201,43,33,34,12,4,1,176,11,4,3,9,254,192,8,8,9,1,15,1,64,81,3,12,224,15,1,1,7,8,8,224, +10,3,254,205,17,3,3,17,15,42,25,25,1,1,25,25,42,15,0,0,0,2,0,0,255,192,0,255,1,191,0,84, +0,110,0,0,55,54,55,54,39,38,39,38,47,1,38,39,38,55,54,55,54,23,22,23,22,55,54,55,54,39,38,39, +38,39,38,7,6,7,6,23,22,23,6,7,6,23,22,23,22,23,48,49,23,22,23,22,7,22,7,6,39,38,39,48, +49,39,38,7,6,7,6,23,22,31,1,50,49,22,23,22,51,50,55,54,55,54,39,38,47,1,54,55,49,54,55,50, +23,22,23,22,23,22,7,6,7,6,7,38,39,38,35,38,39,38,55,225,23,6,6,18,18,30,29,28,12,43,11,10, +4,2,11,24,45,16,26,13,11,12,5,4,5,5,13,32,21,72,45,33,6,5,9,9,16,23,6,6,18,18,27,26, +21,13,47,15,15,5,1,22,24,38,26,29,10,13,11,12,5,4,5,5,13,9,1,32,35,19,17,35,27,49,9,5, +9,8,17,160,3,11,11,13,2,6,7,1,47,15,15,5,3,11,11,13,5,11,11,1,43,11,10,4,111,21,34,44, +25,26,13,13,8,3,14,11,12,16,14,8,16,7,3,9,5,6,5,13,13,11,12,5,11,4,11,31,24,39,32,21, +22,14,21,35,43,25,25,13,12,6,4,13,12,11,20,13,13,11,6,6,12,3,5,6,5,12,13,12,11,6,3,14, +7,3,12,23,51,32,21,22,14,96,15,7,7,2,2,2,1,13,12,11,20,15,7,7,2,1,4,3,14,11,12,16, +0,6,0,0,255,224,1,255,1,160,0,30,0,39,0,52,0,68,0,75,0,87,0,0,37,53,35,34,39,38,53,52, +55,54,51,33,54,55,38,39,33,6,7,6,7,22,23,22,23,51,22,23,22,23,51,39,38,39,54,55,22,23,6,7, +23,6,31,1,6,7,22,23,51,53,39,38,7,37,52,39,49,38,53,7,22,21,20,21,20,35,23,54,39,7,21,54, +55,39,6,7,55,38,39,49,38,39,35,21,51,50,23,55,1,32,224,14,9,9,9,9,14,1,112,15,1,1,15,254, +144,27,18,18,1,1,18,18,27,3,13,51,52,73,32,96,22,2,2,22,22,2,2,22,34,6,19,6,19,2,2,22, +72,63,22,9,1,29,2,1,125,1,1,91,42,5,159,57,41,80,8,10,146,22,45,46,57,8,16,19,13,130,128,192, +9,9,14,14,9,9,1,15,15,1,1,18,18,27,27,18,18,1,70,44,45,1,104,2,22,22,2,2,22,22,2,183, +22,9,3,3,20,22,2,70,24,7,20,112,6,6,2,3,91,3,4,2,2,1,40,53,73,126,66,6,35,36,8,3, +175,50,30,29,1,192,12,94,0,3,0,0,255,192,2,0,1,192,0,83,0,119,0,131,0,0,1,50,23,49,22,29, +1,22,31,1,22,23,22,7,6,7,6,47,1,38,43,1,6,7,6,7,22,31,1,22,23,22,29,1,6,7,6,7, +21,20,7,6,35,34,39,38,61,1,38,47,1,38,39,38,55,54,55,54,31,1,22,51,54,55,54,55,53,38,47,1, +38,39,38,53,54,55,54,55,53,52,55,54,51,49,5,52,55,49,54,59,1,22,23,22,23,6,7,6,7,23,22,7, +6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55,54,55,38,39,38,39,35,21,1,144, +14,9,9,19,17,10,12,4,4,5,7,12,12,12,10,16,16,2,23,15,15,1,2,32,52,34,20,20,1,22,22,35, +9,9,14,14,9,9,23,19,24,11,2,3,7,8,13,12,12,23,17,20,21,14,14,1,2,32,52,34,20,20,1,22, +21,36,9,9,14,254,112,9,9,14,80,61,41,40,2,1,23,23,39,52,4,5,5,12,13,12,11,6,56,42,9,9, +14,14,9,9,64,48,34,23,22,1,1,22,23,34,48,1,192,9,9,14,18,4,8,5,7,12,12,12,12,4,4,5, +5,8,1,15,15,23,35,15,21,14,29,29,37,4,39,29,29,12,21,14,9,9,9,9,14,19,6,13,15,8,13,13, +11,11,2,3,7,16,11,1,14,14,21,4,35,15,21,14,29,29,37,40,29,30,13,22,14,9,9,64,14,9,9,2, +40,41,61,45,35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34, +23,22,1,160,0,3,0,0,255,224,1,192,1,160,0,21,0,43,0,65,0,0,19,54,55,49,54,55,51,22,23,22, +23,17,6,7,6,7,35,38,39,38,39,17,7,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38, +39,53,37,22,23,49,22,23,17,6,7,6,7,35,38,39,38,39,17,54,55,54,55,51,160,1,13,14,20,32,20,14, +13,1,1,13,14,20,32,20,14,13,1,160,1,13,14,20,32,20,14,13,1,1,13,14,20,32,20,14,13,1,1,144, +20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,32,1,112,20,14,13,1,1,13,14,20,254,160,20,14, +13,1,1,13,14,20,1,96,192,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,160,176,1,13,14,20, +254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,0,2,0,0,255,224,2,0,1,160,0,38,0,78,0,0, +1,6,7,49,6,7,35,21,51,22,23,22,15,1,6,47,1,38,55,54,55,51,53,35,38,39,38,39,53,54,55,54, +55,33,22,23,22,23,21,3,51,53,35,55,54,39,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55, +54,55,51,6,31,1,35,21,51,23,22,51,50,63,1,2,0,1,18,18,27,168,46,17,5,6,11,71,16,17,71,10, +6,5,17,46,168,27,18,18,1,1,18,18,27,1,128,27,18,18,1,199,135,71,7,24,9,49,27,18,18,1,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,48,9,24,8,71,135,17,18,22,22,18,17,1,32,27,18,18,1,64,1, +14,13,12,71,14,14,71,12,13,14,1,64,1,18,18,27,64,27,18,18,1,1,18,18,27,64,255,0,64,8,26,30, +1,18,18,27,64,27,18,18,1,1,18,18,27,64,27,18,18,1,30,26,8,64,16,17,17,16,0,0,0,3,0,0, +255,224,2,0,1,160,0,21,0,26,0,67,0,0,23,38,39,49,38,39,53,54,55,54,55,33,22,23,22,23,21,6, +7,6,7,33,37,53,33,21,33,3,6,7,49,6,7,35,38,39,38,39,53,54,55,54,55,33,22,23,22,23,21,51, +22,23,22,15,1,6,47,1,38,55,54,55,51,53,38,39,35,21,64,27,18,18,1,1,18,18,27,1,128,27,18,18, +1,1,18,18,27,254,128,1,128,254,128,1,128,160,1,18,18,27,160,27,18,18,1,1,18,18,27,1,48,34,23,22, +1,38,17,5,6,11,71,16,17,71,10,6,5,17,38,1,15,80,32,1,18,18,27,64,27,18,18,1,1,18,18,27, +64,27,18,18,1,64,64,64,1,0,27,18,18,1,1,18,18,27,64,27,18,18,1,1,22,23,34,16,1,14,13,12, +71,14,14,71,12,13,14,1,16,15,1,64,0,3,0,0,255,224,2,0,1,160,0,21,0,62,0,67,0,0,37,6, +7,49,6,7,33,38,39,38,39,53,54,55,54,55,33,22,23,22,23,21,37,35,38,39,38,39,53,54,55,54,55,33, +22,23,22,23,21,51,22,23,22,15,1,6,47,1,38,55,54,55,51,53,38,39,35,21,6,7,6,7,49,39,51,53, +35,21,2,0,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,224,160,27,18,18,1,1, +18,18,27,1,48,34,23,22,1,38,17,5,6,11,71,16,17,71,10,6,5,17,38,1,15,80,1,18,18,27,160,160, +160,32,27,18,18,1,1,18,18,27,64,27,18,18,1,1,18,18,27,64,192,1,18,18,27,64,27,18,18,1,1,22, +23,34,16,1,14,13,12,71,14,14,71,12,13,14,1,16,15,1,64,27,18,18,1,64,64,64,0,0,0,6,0,0, +255,192,2,0,1,192,0,26,0,77,0,94,0,105,0,116,0,127,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,31,1,22,51,50,63,1,54,53,52,47,1,38,47,1,38,35, +34,15,1,6,39,38,39,48,53,39,38,35,34,15,1,6,15,1,6,7,6,31,1,22,23,22,63,1,54,31,1,22, +23,49,55,38,15,1,6,7,6,31,1,22,59,1,54,55,54,47,1,3,51,54,55,38,39,35,6,7,22,23,55,38, +7,6,31,1,22,55,54,47,1,7,54,39,38,15,1,6,23,22,63,1,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,216,25,10,14,21,12,13,9,9,18,7,4,10,3,7,6,3,11,8, +12,5,3,5,11,19,19,12,5,3,3,35,16,5,5,7,4,7,13,13,14,16,10,10,39,3,4,58,16,20,39,11, +2,1,11,43,7,9,30,11,3,4,7,22,10,16,15,1,1,15,16,15,1,1,15,167,6,14,13,3,8,6,14,13, +3,8,20,10,10,11,11,32,10,10,11,11,32,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,105,16,7,17,15,12,14,15,11,23,10,10,26,7,4,15,9,1,2,3,1,6,15,15,7,3, +2,17,8,15,16,16,6,13,5,6,5,4,4,4,13,2,2,218,16,5,7,4,10,11,6,19,3,1,9,9,8,22, +254,207,1,15,15,1,1,15,15,1,149,13,3,6,14,24,13,3,6,14,24,80,11,11,10,10,32,11,11,10,10,32, +0,4,0,0,255,192,2,128,1,192,0,46,0,67,0,98,0,104,0,0,19,54,23,51,50,23,52,63,1,54,51,50, +23,22,21,20,15,1,34,21,48,21,22,23,51,50,23,22,21,20,7,6,43,1,20,7,23,22,7,6,39,1,38,55, +54,31,1,55,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,22,23,22,23,49,5,54,55,23,21,38,39,7, +6,35,34,39,38,53,52,63,1,54,55,38,53,35,34,39,38,53,52,55,54,59,1,23,53,23,6,7,49,239,13,12, +112,26,22,1,64,10,13,13,10,9,9,64,2,9,2,64,14,9,9,9,9,14,64,3,154,16,12,15,19,253,176,16, +12,15,19,200,177,8,8,12,136,12,8,8,1,27,27,41,41,27,27,1,255,0,2,5,137,53,37,63,10,13,13,10, +9,9,64,3,3,15,64,14,9,9,9,9,14,64,176,95,39,56,1,29,4,1,11,1,1,64,9,9,10,13,13,10, +64,1,1,18,21,9,9,14,14,9,9,15,14,120,15,19,16,12,1,208,15,19,16,12,158,67,4,12,8,8,8,8, +12,4,41,27,27,1,1,27,27,41,160,16,13,109,143,6,33,63,9,9,10,13,13,10,64,2,2,32,37,9,9,14, +14,9,9,223,118,74,38,6,0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,76,0,0,19,54,55,49, +54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,38,39,6,7,21,35,6,7,22,23,51,21,22,23,54, +55,53,51,54,55,38,39,35,53,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18, +18,1,1,0,128,128,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,15,15,1,48,15,1,1, +15,48,1,15,15,1,48,15,1,1,15,48,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1, +1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,65,14,2,2,14,48, +2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,4,0,0,255,192,2,128,1,192,0,25,0,42,0,73, +0,86,0,0,19,52,63,1,54,55,33,22,31,1,22,21,20,7,6,7,38,39,6,7,33,34,39,38,53,49,5,21, +6,7,6,7,35,38,39,38,39,53,51,21,51,53,51,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1, +34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,0,6,76,14,26, +1,140,26,14,76,6,10,9,15,31,47,47,31,254,99,16,10,11,1,128,1,13,14,20,224,20,14,13,1,64,192,64, +144,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,37,11, +9,114,20,1,1,20,114,9,11,15,10,10,2,31,1,1,31,11,10,16,69,240,20,14,13,1,1,13,14,20,240,160, +160,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48, +14,9,9,0,0,3,0,0,255,192,2,0,1,192,0,121,0,139,0,148,0,0,19,54,55,51,22,23,6,7,35,21, +22,23,55,39,38,55,54,31,1,22,7,6,47,1,7,22,23,51,53,54,55,22,23,21,6,7,38,39,53,35,6,7, +23,55,54,23,22,15,1,6,39,38,63,1,39,6,7,21,51,22,23,6,7,35,38,39,54,55,51,53,38,39,7,23, +22,7,6,47,1,38,55,54,31,1,55,38,39,35,21,6,7,38,39,53,54,55,22,23,21,51,54,55,39,7,6,39, +38,63,1,54,23,22,15,1,23,54,55,53,35,38,39,49,21,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,23,54,55,38,39,6,7,22,23,192,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17, +17,11,24,28,6,34,2,22,22,2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47, +16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6,34,2,22,22, +2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47,16,22,2,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,112,22,2,2,22,22,2,2,22,1,168,22,2,2,22,22,2,34,6,28,24,11, +17,17,14,14,56,17,17,14,14,11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17, +56,14,14,17,17,11,24,28,6,34,2,22,22,2,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17,14,14, +11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6, +34,2,22,152,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,152,2,22,22,2,2,22,22,2,0,0,0, +0,2,0,0,255,192,2,128,1,192,0,69,0,127,0,0,19,55,54,23,22,15,1,23,54,55,53,35,34,39,38,53, +52,55,54,59,1,22,23,6,7,35,21,22,23,55,39,38,55,54,31,1,22,7,6,47,1,7,22,23,51,53,54,55, +22,23,21,6,7,38,39,53,35,6,7,23,22,7,6,39,1,38,55,54,31,3,6,7,21,51,22,23,6,7,35,34, +39,38,53,52,55,54,59,1,53,38,39,7,23,22,7,6,47,1,38,55,54,31,1,55,38,39,35,21,6,7,34,39, +38,61,1,52,55,54,51,22,23,21,51,54,55,49,134,33,17,17,14,14,11,24,36,45,16,10,7,7,7,7,10,81, +22,2,2,22,16,47,35,24,11,14,14,17,17,56,14,14,17,17,11,24,28,6,34,2,22,22,2,2,22,22,2,34, +5,17,159,16,12,15,19,253,176,16,12,15,19,95,15,252,26,31,16,22,2,2,22,81,10,7,7,7,7,10,16,45, +36,24,11,14,14,17,17,56,14,14,17,17,10,25,28,6,35,1,23,10,7,7,7,7,10,23,1,35,1,2,1,112, +33,14,14,17,17,11,24,28,6,34,7,7,10,10,7,7,2,22,22,2,34,6,28,24,11,17,17,14,14,56,17,17, +14,14,11,24,35,47,16,22,2,2,22,80,22,2,2,22,16,35,30,124,15,19,16,12,1,208,15,19,16,12,75,134, +198,14,4,34,2,22,22,2,7,7,10,10,7,7,34,6,28,24,11,17,17,14,14,56,17,17,14,14,11,24,35,47, +16,22,2,7,7,10,80,10,7,7,2,22,16,9,9,0,0,4,0,0,255,192,2,128,1,192,0,68,0,86,0,104, +0,120,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6,43,1,38,39,38,39,53,7,6,39,38,63, +1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55, +22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,5,6,7,49,6, +7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,1,96,14, +9,9,9,9,14,33,20,19,34,12,12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27, +27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14, +13,9,9,1,1,9,9,13,1,97,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10, +10,40,11,11,72,10,10,11,11,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45,68,6,6,15,15,16,17,56, +14,14,56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21, +21,13,48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,5,0,0,255,192,2,128,1,192,0,68,0,86,0,104, +0,113,0,124,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6,43,1,38,39,38,39,53,7,6,39, +38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53,52,55,54,59,1,38,39,54,55, +54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,23,54,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38, +39,6,7,1,96,14,9,9,9,9,14,33,20,19,34,12,12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15, +15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65, +14,9,9,9,9,14,13,9,9,1,1,9,9,13,65,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144, +22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45, +68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27, +27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61, +61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,4,0,0, +255,192,2,128,1,192,0,68,0,86,0,104,0,129,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,22,23,6, +43,1,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38, +53,52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34, +7,6,7,22,23,22,51,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39, +38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,96,14,9,9,9,9,14,33,20,19,34,12,12, +160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14,11, +41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14,13,9,9,1,1,9,9,13,65,2,40, +41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,1,16,9,9,14,14,9,9,208,37,25,2,2,45,45,68,6,6,15,15,16,17,56,14,14, +56,17,16,15,15,6,6,41,27,27,1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13, +48,9,9,14,14,9,9,9,9,14,14,9,9,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11, +11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,4,0,0,255,192,2,128, +1,192,0,71,0,89,0,120,0,133,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,50,55,21,20,23,6,43, +1,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53,35,34,39,38,53, +52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52,39,38,35,34,7, +6,7,22,23,22,51,23,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,51, +53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,96,14,9,9,9,9,14,33,49,8,8,8,12, +12,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27,27,41,48,32,14,9,9,9,9,14, +11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,65,14,9,9,9,9,14,13,9,9,1,1,9,9,13,241,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,16,9,9,14, +14,9,9,208,1,33,16,14,2,2,45,45,68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27, +1,208,9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14, +14,9,9,64,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14, +48,48,14,9,9,0,0,0,0,3,0,0,255,192,2,64,1,192,0,73,0,86,0,98,0,0,55,38,53,49,52,55, +54,51,50,31,1,53,35,34,39,38,53,52,55,54,55,33,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1, +22,21,20,7,6,35,34,47,1,21,51,22,23,22,21,20,7,6,35,33,21,55,54,51,50,23,22,21,20,15,1,6, +35,34,47,1,19,52,55,49,54,55,22,23,22,29,1,35,53,1,21,20,7,6,35,34,39,38,61,1,51,41,9,9, +10,13,13,10,41,96,14,9,9,9,9,14,1,96,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13, +10,41,96,14,9,9,9,9,14,254,160,41,10,13,13,10,9,9,96,10,13,13,10,96,87,9,9,14,14,9,9,64, +1,64,9,9,14,14,9,9,64,41,10,13,13,10,9,9,42,116,9,9,14,13,9,9,1,114,42,9,9,10,13,13, +10,96,9,9,96,10,13,13,10,9,9,42,114,1,9,9,13,14,9,9,116,42,9,9,10,13,13,10,96,9,9,96, +1,88,13,9,9,1,1,9,9,13,128,128,255,0,129,14,9,9,9,9,14,129,0,0,0,5,0,0,255,192,2,128, +1,192,0,68,0,80,0,92,0,123,0,136,0,0,23,39,38,53,52,55,54,51,50,31,1,53,35,34,39,38,53,52, +55,54,55,33,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,51,6, +29,1,33,21,55,54,51,50,23,22,21,20,15,1,6,35,34,39,49,3,53,52,55,54,55,22,23,22,29,1,35,5, +21,20,7,6,35,34,39,38,61,1,51,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61, +1,52,55,54,51,53,54,55,54,55,21,6,7,49,6,29,1,51,53,52,39,38,39,105,96,9,9,10,13,13,10,41, +64,14,9,9,9,9,14,1,0,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,75,11,255, +0,41,10,13,13,10,9,9,96,10,13,13,10,9,9,9,14,14,9,9,64,1,0,9,9,14,14,9,9,64,176,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,55,96,10,13,13, +10,9,9,42,116,9,9,14,13,9,9,1,114,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,114, +23,25,16,116,42,9,9,10,13,13,10,96,9,9,1,56,128,13,9,9,1,1,9,9,13,128,128,129,14,9,9,9, +9,14,129,128,1,23,23,33,48,10,9,14,128,14,9,9,9,9,14,128,14,9,10,48,33,23,23,1,48,1,9,9, +13,48,48,13,9,9,1,0,0,7,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86,0,99,0,135, +0,0,1,54,55,49,54,55,51,22,23,22,23,21,51,53,54,55,22,23,21,51,22,23,22,23,21,6,7,6,7,33, +38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53,38,39,35,7, +22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23,51,54,55,53, +38,39,35,6,7,21,37,22,21,49,20,15,1,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1, +39,38,53,52,55,54,51,50,31,1,1,32,1,13,14,20,96,20,14,13,1,40,2,22,22,2,24,20,14,13,1,1, +13,14,20,255,0,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15,1,1,15,32,16, +1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1,1,15,32,15,1, +254,247,9,9,80,10,13,13,10,9,9,26,115,14,9,9,9,9,14,115,26,9,9,10,13,13,10,80,1,144,20,14, +13,1,1,13,14,20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1,13,14,20,1,160,64,15,1,1, +15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,48,1,15, +32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,167,10,13,13,10,80,9,9,10,13,13,10,25, +9,9,14,14,9,9,25,10,13,13,10,9,9,80,0,0,0,4,0,0,255,192,2,64,1,192,0,34,0,88,0,106, +0,125,0,0,37,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20, +7,6,35,34,39,38,53,23,54,23,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38, +39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,49,39,38,39, +38,7,34,7,6,7,6,7,53,54,55,54,55,51,21,37,21,38,39,38,39,38,35,38,7,6,7,53,51,22,23,22, +23,49,1,0,25,10,13,13,10,9,9,80,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,14,18, +19,34,43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43, +21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,78,31,28,19,21,21,17,17,21,9,8,1,13,14, +20,144,1,128,8,9,21,17,17,21,21,19,29,30,144,20,14,13,1,129,210,26,9,9,10,13,13,10,80,9,9,80, +10,13,13,10,9,9,26,210,14,10,9,9,10,14,103,12,12,25,1,2,24,13,15,18,7,3,11,11,13,13,7,7, +3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1, +25,5,1,20,12,1,15,13,5,2,5,186,20,13,14,1,226,178,185,3,3,5,13,15,1,12,20,1,226,1,14,13, +20,0,0,0,0,2,0,0,255,192,2,64,1,192,0,83,0,137,0,0,19,22,23,49,22,29,1,51,53,7,6,35, +34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,51,22,23,22,23,21,20,7,38,39, +38,39,38,35,38,7,6,7,38,39,38,35,34,7,6,7,38,39,38,7,34,7,6,7,6,7,38,61,1,54,55,54, +55,51,53,54,55,54,55,51,19,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39, +6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,239,21, +13,14,129,25,10,13,13,10,9,9,80,10,13,13,10,80,9,9,10,13,13,10,25,48,20,14,13,1,5,6,6,21, +17,17,21,21,19,29,30,30,29,17,20,20,17,26,33,31,28,19,21,21,17,17,21,6,6,5,1,13,14,20,16,1, +13,14,20,127,145,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49, +51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,192,1,13,14,20,208,147, +26,9,9,10,13,13,10,80,9,9,80,10,13,13,10,9,9,26,147,1,13,14,20,96,12,10,2,2,5,13,15,1, +12,20,1,1,20,12,12,19,2,1,20,12,1,15,13,5,2,2,10,12,96,20,14,13,1,208,20,14,13,1,254,64, +2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7, +7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,11,0,0,255,192,2,64,1,192,0,35, +0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,179,0,197,0,215,0,0,1,50,23,49,22,29,1,20,7,6, +35,34,39,38,39,53,7,6,35,34,39,38,53,52,63,1,35,34,39,38,39,54,55,54,59,1,5,6,7,49,6,7, +38,39,38,39,54,55,54,55,22,23,22,23,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23, +22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,37,54,55,49,54,55,22,23,22,21,20,7, +6,7,38,39,38,39,23,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,35,54,55,49,54,55,22,23, +22,21,20,7,6,7,38,39,38,39,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,31,14,10,9,9,10,14,13,9,9,1,200,10,13,13,10,9, +9,202,52,13,9,9,1,1,9,9,13,128,1,33,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,254,159,1,14,13,20,21,14,14,14,14,21,20,13,14,1,97,14,14,21,20,13,14,1,1,14,13,20,21,14, +14,225,1,14,13,20,21,13,14,14,13,21,20,13,14,1,1,225,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,9,9,14,128,14,9,9,9,9,14,51, +202,9,9,10,13,13,10,201,9,9,14,14,9,9,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14, +20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,3,0,0,255,224,2,64, +1,160,0,19,0,55,0,91,0,0,37,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,39,6, +35,49,34,47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20, +15,1,39,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50, +23,22,21,20,7,49,2,32,14,9,9,9,9,14,254,0,14,9,9,9,9,14,2,0,73,10,13,13,10,96,9,9, +10,13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,96,224,96,10,13,13,10,96,9,9,10,13,13,10, +41,9,9,14,14,9,9,41,10,13,13,10,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,41,9,9,96,10, +13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,96,96,96,9,9,96,10,13,13,10,9, +9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,0,0,0,0,6,0,16,255,192,2,111,1,192,0,23, +0,41,0,59,0,77,0,169,0,192,0,0,19,21,55,54,23,22,15,1,6,47,1,38,55,54,31,1,53,52,55,54, +51,22,23,49,23,20,7,49,6,35,34,39,38,39,54,55,54,51,50,23,22,21,7,20,7,49,6,35,34,39,38,39, +54,55,54,51,50,23,22,21,33,54,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,39,5,20,7,49,6,43, +1,34,39,38,39,53,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59,1,50,23,22,31,1,54,59, +1,50,23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6,39,38,63,1,38,47,1,21, +20,7,6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,47,1,21,19,38,55,54,31,1,53,52,55,54, +51,22,23,21,55,54,23,22,15,1,6,47,1,167,24,17,16,15,15,64,16,17,64,14,14,17,17,22,7,7,10,23, +1,192,11,11,18,16,12,11,1,1,11,12,16,18,11,11,176,11,11,18,16,12,11,1,1,11,12,16,18,11,11,1, +16,1,11,12,16,18,11,11,11,11,18,16,12,11,1,255,0,9,9,14,48,13,9,9,1,26,12,20,19,9,38,12, +20,21,24,20,25,20,34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,28,9,9, +14,48,13,9,9,1,26,12,20,19,9,36,2,2,28,9,9,14,48,13,9,9,1,26,1,1,1,1,36,9,19,20, +12,28,216,14,14,17,16,23,7,7,10,23,1,24,17,16,15,15,64,16,17,64,1,168,118,23,14,14,17,16,64,15, +15,64,16,17,14,14,23,118,10,7,7,2,22,176,17,11,12,12,11,17,17,11,12,12,11,17,96,17,11,12,12,11, +17,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,184,14,9,9,9,9,14,38,49,19,9,12,20, +71,21,13,12,13,63,21,13,13,13,13,21,63,13,12,13,21,71,20,12,9,19,49,38,14,9,9,9,9,14,38,49, +19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12,9,19,49,38,1,72,16,17, +14,14,23,118,10,7,7,2,22,118,23,14,14,17,16,64,15,15,64,0,0,3,0,0,0,0,2,128,1,128,0,19, +0,72,0,92,0,0,19,50,23,49,22,21,17,20,7,6,35,34,39,38,53,17,52,55,54,51,23,22,21,49,20,15, +1,51,39,38,53,52,55,54,51,50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,35,23,22,21,20,7, +6,35,34,47,1,38,53,52,63,1,54,51,50,23,49,1,20,7,49,6,35,34,39,38,53,17,52,55,54,51,50,23, +22,21,17,32,14,9,9,9,9,14,14,9,9,9,9,14,215,9,9,42,230,42,9,9,10,13,13,10,96,9,9,96, +10,13,13,10,9,9,42,230,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,1,137,9,9,14,14,9,9,9, +9,14,14,9,9,1,128,9,9,14,254,192,14,9,9,9,9,14,1,64,14,9,9,73,10,13,13,10,41,41,10,13, +13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9, +254,233,14,9,9,9,9,14,1,64,14,9,9,9,9,14,254,192,0,0,0,4,0,33,255,224,1,225,1,160,0,24, +0,49,0,74,0,99,0,0,1,34,7,53,54,51,22,23,55,54,23,22,23,21,6,7,35,34,39,38,63,1,38,39, +49,7,20,23,35,38,53,54,55,39,38,55,54,55,51,22,23,21,20,7,6,47,1,6,7,49,23,7,22,23,54,55, +21,6,7,38,39,7,6,39,38,39,53,54,55,51,22,23,22,7,49,55,23,54,55,52,39,51,22,21,6,7,23,22, +7,6,7,35,38,39,53,54,55,54,23,49,1,1,17,17,17,17,89,62,30,8,9,9,1,1,15,105,11,4,4,7, +31,44,62,160,3,65,2,2,55,29,8,4,4,10,106,15,1,9,10,8,30,38,1,85,29,43,61,16,15,15,16,88, +61,31,9,9,9,1,2,14,106,10,4,4,7,166,29,39,1,3,65,2,2,56,31,7,4,4,11,105,15,1,1,9, +9,8,1,96,3,65,2,2,56,29,8,4,4,11,105,15,1,9,10,8,31,38,1,160,16,16,16,16,88,62,29,9, +9,9,1,2,14,106,11,4,3,7,30,43,61,92,29,37,2,1,2,64,2,1,3,54,31,7,4,4,11,105,15,1, +1,9,9,8,16,29,43,62,17,15,15,17,89,62,31,8,9,9,1,1,15,105,11,4,4,7,0,0,0,3,0,0, +255,192,2,0,1,192,0,79,0,84,0,88,0,0,19,6,35,49,34,39,38,53,52,63,1,54,51,50,31,1,22,21, +20,7,6,35,34,47,1,17,22,23,22,23,51,50,23,22,21,20,7,6,43,1,38,39,38,39,38,39,38,39,35,23, +22,21,20,7,6,35,34,47,1,49,38,53,55,54,63,1,54,51,50,23,22,21,20,15,1,51,22,23,53,15,1,52, +55,6,21,49,53,21,49,247,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,1,18,18,27,64, +14,9,9,9,9,14,64,54,37,36,1,1,18,18,27,115,42,9,9,10,13,13,10,96,9,2,3,4,96,10,13,13, +10,9,9,42,115,35,29,41,247,2,2,1,41,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,254,237, +27,18,18,1,9,9,14,14,9,9,1,36,37,54,27,18,18,1,41,10,13,13,10,9,9,96,9,14,12,7,4,96, +9,9,10,13,13,10,40,1,17,164,42,137,7,5,6,6,1,1,0,0,0,5,0,0,255,192,2,128,1,192,0,45, +0,63,0,103,0,144,0,191,0,0,19,54,51,49,50,31,1,53,54,55,54,55,22,23,22,29,1,20,7,6,49,6, +7,49,6,7,48,7,6,43,1,34,39,38,39,54,55,54,55,51,39,38,53,52,55,49,5,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,5,34,39,49,38,53,52,55,54,59,1,49,50,23,49,22,23,22,29,1,20,7, +6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,1,50,23,49,22,29,1,55,54,51,50,23,22,21, +20,15,1,51,50,23,22,21,20,7,6,43,1,34,39,49,38,39,38,61,2,52,55,54,51,49,19,23,22,21,20,7, +6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,52,21,48,49,52,55,54,55,48,53,54,51,48,49,34,59,1, +50,23,22,21,20,7,6,43,1,9,10,13,13,10,104,1,9,9,13,14,9,9,1,1,2,4,5,5,1,5,8,96, +13,9,9,1,1,9,9,13,20,106,9,9,1,119,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,224, +14,9,9,9,9,14,96,14,9,4,3,2,9,9,14,14,9,9,105,10,13,13,10,9,9,106,19,1,96,14,9,9, +105,10,13,13,10,9,9,106,19,14,9,9,9,9,14,96,14,9,5,2,2,9,9,14,77,106,9,9,10,13,13,10, +105,9,9,14,14,9,9,2,2,5,9,14,1,1,96,14,9,9,9,9,14,19,1,183,9,9,106,20,13,9,9,1, +1,9,9,13,96,8,5,1,5,5,4,2,1,1,9,9,14,13,9,9,1,104,10,13,13,10,247,27,18,18,1,1, +18,18,27,27,18,18,1,1,18,18,27,96,9,9,14,14,9,9,9,5,6,6,5,97,14,9,9,9,9,14,19,106, +9,9,10,13,13,10,105,1,32,9,9,14,19,106,9,9,10,13,13,10,105,9,9,14,14,9,9,9,6,5,5,7, +1,95,14,9,9,254,224,105,10,13,13,10,9,9,106,19,14,9,9,9,9,14,96,1,1,7,5,6,4,1,9,9, +9,14,14,9,9,0,0,0,0,5,0,0,255,192,2,0,1,192,0,34,0,71,0,89,0,125,0,162,0,0,1,55, +54,51,50,23,22,21,20,15,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,53,54,55,54,51,50,23,22,29, +1,19,6,35,49,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15,1,51,22,23,22,21,20,7,6,43,1, +23,22,21,20,7,49,39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,22,21,49,20,15,1,6, +35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50,31,1,7,38,53,49, +52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39, +49,1,32,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10,8,1,9,9,13,14,10,9,151,10, +13,13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,151,9,9,14,14,9,9, +9,9,14,14,9,9,105,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,10,13,13,10, +64,14,9,9,64,10,13,13,10,64,9,9,10,13,13,10,9,9,9,14,14,9,9,9,10,13,13,10,1,109,10,9, +9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,254,252,9,9,64,10,13,13, +10,64,9,9,10,13,13,10,8,1,9,9,13,14,9,9,10,10,13,13,10,87,14,9,9,9,9,14,14,9,9,9, +9,14,23,10,13,13,10,64,9,9,10,13,13,10,9,9,9,14,14,9,9,9,10,13,13,10,9,9,64,206,10,13, +13,10,64,9,9,64,10,13,13,10,9,9,10,51,14,9,9,9,9,14,51,10,9,9,0,6,0,8,255,201,2,119, +1,184,0,21,0,53,0,71,0,92,0,114,0,135,0,0,19,54,31,1,53,54,55,22,23,21,6,7,35,38,39,54, +55,51,39,38,55,49,23,54,55,49,54,55,49,54,55,22,23,22,23,22,23,22,7,6,7,6,7,6,7,38,39,38, +39,38,39,38,55,49,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,54,23,22,15,1,51,22, +23,6,7,35,38,39,53,54,55,22,23,21,55,1,55,35,38,39,54,55,51,22,23,21,6,7,38,39,53,7,6,39, +38,55,49,37,21,6,7,38,39,53,54,55,51,22,23,6,7,35,23,22,7,6,47,1,15,17,17,63,2,22,22,2, +2,22,96,22,3,3,22,38,63,14,14,119,12,25,26,37,37,49,49,37,37,26,25,13,5,5,13,25,26,37,37,49, +49,37,37,26,25,12,6,6,186,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,15,17,16,15,15,62, +38,22,2,2,22,96,22,2,2,22,22,2,63,253,192,63,38,22,3,3,22,96,22,2,2,22,22,2,63,17,17,14, +14,2,1,2,22,22,2,2,22,96,22,2,2,22,38,62,15,15,16,17,63,1,177,14,14,63,38,22,3,3,22,96, +22,2,2,22,22,2,63,17,17,229,26,31,30,22,22,1,1,22,22,30,31,26,12,12,26,31,30,22,22,1,1,22, +22,30,31,26,12,12,76,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,49,14,14,17,17,63,2,22, +22,2,2,22,96,22,3,3,22,38,63,254,64,63,2,22,22,2,2,22,96,22,2,2,22,38,62,15,15,16,17,29, +38,22,2,2,22,96,22,2,2,22,22,2,63,17,16,15,15,62,0,0,0,2,0,0,255,192,1,192,1,192,0,46, +0,93,0,0,1,54,51,49,50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,35,6,7,6,7,21,20, +7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52,55,49,3,54,51,49,50,31,1,22,21,20,15,1,6, +35,34,39,38,53,52,63,1,35,34,7,6,29,1,20,7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52, +55,49,1,41,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,211,27,18,18,1,9,9,14,14,9,9,1,36, +37,54,211,42,9,9,96,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,147,14,9,9,9,9,14,14,9,9, +1,27,27,41,147,42,9,9,1,183,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,1,18,18,27,32,14,9, +9,9,9,14,32,54,37,36,1,41,10,13,13,10,255,0,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,9, +9,14,32,14,9,9,9,9,14,32,41,27,27,1,41,10,13,13,10,0,0,4,0,0,255,192,2,0,1,176,0,45, +0,91,0,109,0,127,0,0,19,54,51,49,50,23,22,21,20,15,1,51,22,23,22,23,21,20,7,6,35,34,39,38, +61,1,52,39,38,39,35,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,19,22,21,49,20,15,1,6,35,34, +39,38,53,52,63,1,35,34,7,6,29,1,20,7,6,35,34,39,38,61,1,54,55,54,55,51,39,38,53,52,55,54, +51,50,31,2,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,1,6,7,49,6,7,38,39,38,39,54, +55,54,55,22,23,22,23,249,10,13,13,10,9,9,26,147,41,27,27,1,9,9,14,14,9,9,9,9,14,147,26,9, +9,10,13,13,10,80,9,9,80,94,9,9,80,10,13,13,10,9,9,26,147,14,9,9,9,9,14,14,9,9,1,27, +27,41,147,26,9,9,10,13,13,10,80,169,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,254,128,1,18, +18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,167,9,9,10,13,13,10,24,1,27,27,41,32,14,9,9,9, +9,14,32,13,9,9,1,26,10,13,13,10,9,9,80,10,13,13,10,80,254,176,10,13,13,10,80,9,9,10,13,13, +10,25,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,25,10,13,13,10,9,9,80,23,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,1,0,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,0,3,0,0, +255,224,2,64,1,160,0,19,0,55,0,91,0,0,19,34,39,49,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +35,33,23,54,51,49,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34, +39,38,53,52,63,1,23,55,54,51,50,31,1,22,21,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1, +7,6,35,34,39,38,53,52,55,49,32,14,9,9,9,9,14,2,0,14,9,9,9,9,14,254,0,73,10,13,13,10, +96,9,9,10,13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,96,224,96,10,13,13,10,96,9,9,10, +13,13,10,41,9,9,14,14,9,9,41,10,13,13,10,9,9,1,96,9,9,14,14,9,9,9,9,14,14,9,9,41, +9,9,96,10,13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,96,96,96,9,9,96,10, +13,13,10,9,9,42,211,14,9,9,9,9,14,211,42,9,9,10,13,13,10,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,23,0,55,0,0,1,50,23,49,22,21,17,22,23,6,7,6,7,38,39,38,39,54,55,17,52,55,54,51, +7,21,22,23,22,23,54,55,54,55,53,51,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51, +1,0,14,9,9,30,2,1,18,18,27,27,18,18,1,2,30,9,9,14,96,1,27,27,41,41,27,27,1,112,20,14, +13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,112,1,192,9,9,14,254,247,18,37,27,18,18,1,1,18, +18,27,37,18,1,9,14,9,9,128,224,41,27,27,1,1,27,27,41,224,1,13,14,20,254,224,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,0,2,0,32,255,192,1,32,1,192,0,34,0,56,0,0,19,22,23,6,7,35,21,22, +23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,53,35,38,39,52,55,54,59,1,3,50,55,49,54, +55,38,39,38,39,38,39,6,7,6,7,6,7,22,23,22,23,224,22,2,2,22,8,32,20,19,1,1,18,18,27,128, +27,18,18,1,1,19,20,32,8,22,2,7,6,10,129,64,20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1, +1,13,14,20,1,192,2,21,22,3,93,16,30,31,38,192,27,18,18,1,1,18,18,27,192,38,31,30,16,93,2,22, +10,7,7,254,128,12,12,24,17,18,18,13,13,1,1,13,13,18,18,17,20,14,13,1,0,4,0,32,255,192,1,32, +1,192,0,8,0,62,0,73,0,84,0,0,19,22,23,21,35,53,54,55,51,7,54,63,1,54,59,1,50,31,1,22, +23,6,7,22,23,6,7,22,23,6,7,22,23,6,7,22,23,6,7,6,7,35,38,39,38,39,54,55,38,39,54,55, +38,39,54,55,38,39,54,55,38,39,49,23,51,54,55,38,39,35,6,7,22,23,21,6,7,22,23,51,54,55,38,39, +35,200,22,2,128,2,22,80,168,1,22,25,16,19,90,19,16,25,21,2,1,18,18,1,1,20,20,1,1,20,20,1, +1,20,20,1,1,13,14,20,160,20,14,13,1,1,20,20,1,1,20,20,1,1,20,20,1,1,18,18,1,80,96,15, +1,1,15,96,15,1,1,15,15,1,1,15,96,15,1,1,15,96,1,192,2,22,40,40,22,2,152,25,12,11,8,8, +11,12,25,22,12,14,23,28,12,15,25,27,14,14,26,26,14,14,26,20,14,13,1,1,13,14,20,26,14,14,26,26, +14,14,27,25,15,12,28,23,14,12,22,104,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,0,0, +0,2,0,0,255,224,2,0,1,160,0,43,0,74,0,0,19,48,51,49,48,51,54,55,54,55,50,23,54,55,54,51, +50,23,22,23,54,51,22,23,22,23,50,49,50,49,22,23,22,23,20,7,33,38,53,54,55,54,55,49,7,52,55,49, +54,51,33,50,23,22,21,6,7,6,15,1,6,7,6,43,1,34,39,38,47,1,38,39,38,39,49,64,1,1,6,21, +21,30,21,20,10,19,19,23,23,19,19,10,18,23,30,21,21,6,1,1,27,18,18,1,9,254,18,9,1,18,18,27, +64,8,8,11,1,202,11,8,8,1,29,29,48,1,2,9,9,12,232,12,9,9,1,2,48,29,29,1,1,64,28,18, +17,1,11,19,12,12,12,12,19,11,1,17,18,28,1,18,18,27,18,14,14,18,27,18,18,1,155,11,8,8,8,8, +11,54,41,41,19,13,12,9,8,8,9,12,13,19,41,41,54,0,0,0,0,5,0,0,255,192,2,128,1,192,0,28, +0,50,0,63,0,77,0,88,0,0,1,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,35,54,61,1,54,55, +53,38,39,38,39,35,53,1,54,47,1,38,15,1,6,23,22,63,1,21,22,23,54,55,53,23,22,55,49,37,54,55, +33,22,23,21,6,7,33,38,39,53,1,20,7,49,6,35,33,34,39,38,61,1,33,21,39,6,7,22,23,51,54,55, +38,39,35,1,0,1,13,14,20,1,32,20,14,13,1,1,13,14,20,211,3,30,2,1,13,14,20,112,1,59,10,10, +64,11,11,64,10,10,11,11,37,1,15,15,1,37,11,11,253,197,1,15,1,96,15,1,1,15,254,160,15,1,1,96, +9,9,14,255,0,14,9,9,1,64,208,15,1,1,15,96,15,1,1,15,96,1,144,20,14,13,1,1,13,14,20,254, +96,20,14,13,1,8,8,243,12,33,32,20,14,13,1,80,254,213,11,11,64,10,10,64,11,11,10,10,36,121,15,1, +1,15,121,36,10,10,171,15,1,1,15,32,15,1,1,15,32,254,208,14,9,9,9,9,14,224,224,160,1,15,15,1, +1,15,15,1,0,4,0,0,255,224,2,64,1,160,0,64,0,69,0,74,0,79,0,0,1,50,23,49,22,21,20,7, +6,43,1,21,51,21,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,6,7,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21, +51,53,43,2,21,51,53,2,32,14,9,9,9,9,14,40,72,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41, +41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9,9,9,9,14,2,0,88,80,80,208,80,80,48, +80,80,1,160,9,9,14,14,9,9,64,128,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41, +64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14,9,9,64,64,64,64,64,64,64,0,0,6,0,32, +255,192,2,128,1,160,0,53,0,58,0,63,0,68,0,86,0,102,0,0,1,50,23,49,22,21,20,7,6,43,1,21, +51,21,38,39,6,7,6,7,38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53, +35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,1,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,2,64,14,9,9,9, +9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9,9, +9,9,14,2,0,88,80,80,208,80,80,48,80,80,1,152,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2, +99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,160,9,9,14,14,9,9,64,72,39,1,1,26,27,44,2, +1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14,9,9,64,64,64,64,64,64,64,254, +240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10, +0,7,0,32,255,192,2,128,1,160,0,53,0,58,0,63,0,68,0,86,0,95,0,106,0,0,1,50,23,49,22,21, +20,7,6,43,1,21,51,21,38,39,6,7,6,7,38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38, +39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53, +38,39,6,7,2,64,14,9,9,9,9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9, +9,1,27,27,41,72,40,14,9,9,9,9,14,2,0,88,80,80,208,80,80,48,80,80,120,2,40,41,61,61,41,40, +2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,160,9,9,14, +14,9,9,64,72,39,1,1,26,27,44,2,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9, +14,14,9,9,64,64,64,64,64,64,64,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22, +22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,0,6,0,32,255,192,2,128,1,160,0,53, +0,58,0,63,0,68,0,86,0,111,0,0,1,50,23,49,22,21,20,7,6,43,1,21,51,21,38,39,6,7,6,7, +38,35,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54, +51,33,7,35,21,51,53,35,21,51,53,43,2,21,51,53,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,2,64,14,9,9, +9,9,14,40,72,47,65,53,41,41,23,9,9,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72,40,14,9, +9,9,9,14,2,0,88,80,80,208,80,80,48,80,80,120,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2, +203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,160,9,9,14,14,9, +9,64,72,39,1,1,26,27,44,2,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,128,64,9,9,14,14, +9,9,64,64,64,64,64,64,64,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10, +36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,6,0,32,255,192,2,128,1,160,0,54, +0,59,0,64,0,69,0,100,0,113,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,21,35,6,7, +6,7,21,6,7,38,39,6,7,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39, +38,53,21,5,51,53,35,21,35,53,35,21,51,35,51,53,35,21,5,22,23,49,22,23,21,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,32,9, +9,14,2,0,14,9,9,9,9,14,40,8,48,31,32,1,15,9,28,44,41,27,27,1,9,9,14,32,14,9,9,1, +27,27,41,72,40,14,9,9,1,120,80,80,48,80,80,208,80,80,1,120,34,23,22,1,14,9,9,9,9,14,160,14, +9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,128,14,9,9,9,9,14,14,9,9,64,1,32,31,48, +25,8,16,32,2,1,27,28,41,64,14,9,9,9,9,14,64,41,28,27,1,128,64,9,9,14,1,96,64,64,64,64, +64,64,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48, +48,14,9,9,0,2,0,0,255,224,2,64,1,128,0,50,0,104,0,0,19,52,55,49,54,51,33,50,23,22,29,1, +20,7,6,35,6,7,6,7,21,38,7,6,7,61,1,38,39,38,39,6,7,6,7,21,7,38,39,38,7,53,38,39, +38,39,34,39,38,61,1,1,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6, +7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,0,9,9, +14,2,0,14,9,9,8,8,12,29,19,19,1,20,17,29,30,1,27,27,41,41,27,27,1,1,30,28,17,20,1,19, +19,29,12,8,8,1,128,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9, +31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,96,14,9,9,9, +9,14,36,12,8,8,1,19,19,29,125,1,12,20,1,1,128,41,27,27,1,1,27,27,41,128,1,1,20,12,1,125, +29,19,19,1,8,8,12,36,254,192,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4, +4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,2,0,0, +255,192,1,192,1,192,0,24,0,57,0,0,19,35,53,54,55,54,55,51,22,23,22,23,21,35,53,38,39,38,39,35, +6,7,6,7,21,7,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,7,6,7,6,43,1,34,39,38,47,1, +35,34,39,38,53,49,96,48,2,43,42,65,48,65,42,43,2,48,1,29,30,44,48,44,30,29,1,96,9,9,14,1, +128,14,9,9,9,9,14,5,22,3,13,13,19,234,19,13,13,3,22,5,14,9,9,1,32,8,65,42,43,2,2,43, +42,65,8,8,44,30,29,1,1,29,30,44,8,64,14,9,9,9,9,14,14,9,9,213,19,12,12,12,12,19,213,9, +9,14,0,0,0,2,0,0,255,197,2,59,1,191,0,63,0,127,0,0,19,51,55,54,23,22,15,1,6,7,35,21, +23,22,31,1,22,7,6,47,2,6,7,38,39,15,1,6,39,38,63,1,54,63,1,53,35,38,47,1,38,55,54,31, +1,51,54,55,39,38,55,54,31,1,55,54,23,22,15,1,22,23,49,5,23,55,54,23,22,15,1,6,47,1,7,23, +22,15,1,6,39,38,63,1,39,6,39,38,53,39,7,6,39,38,63,1,54,31,1,55,39,38,63,1,54,23,22,15, +1,23,54,63,1,54,51,22,21,7,55,54,23,22,15,1,22,7,49,187,17,5,6,22,21,2,8,5,20,32,39,15, +3,8,1,22,22,5,5,19,18,39,37,18,19,5,5,22,22,1,8,3,15,37,32,17,6,8,2,21,22,7,4,17, +7,16,34,7,19,21,11,26,26,11,21,18,6,33,15,7,1,59,14,14,16,17,16,13,27,13,17,27,12,28,11,5, +22,10,21,19,6,15,14,32,33,32,18,25,15,19,16,12,35,10,16,37,12,28,16,5,13,9,22,19,4,8,16,15, +19,8,4,22,21,6,52,19,14,11,16,67,9,2,1,57,20,21,2,7,22,40,17,1,24,10,4,16,56,22,5,1, +22,40,4,31,1,1,31,4,40,22,1,5,22,56,16,4,10,24,1,17,40,22,7,2,21,20,16,12,73,21,11,7, +19,58,58,19,7,11,21,73,12,16,188,8,16,15,13,16,17,32,13,8,16,20,27,11,15,53,19,6,10,21,38,13, +18,17,21,36,5,31,16,12,15,18,45,11,2,12,20,16,11,18,39,20,5,9,22,20,8,11,3,79,22,4,22,63, +36,12,17,19,15,47,17,19,0,9,0,0,255,192,2,128,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114, +0,132,0,154,0,0,19,54,55,49,54,55,33,22,23,22,23,21,6,7,6,21,22,23,6,7,35,53,38,39,38,39, +6,7,6,7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38, +39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,39,22,23,51,54,55,53,38,39,35,6,7,21,55, +6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,5,6,7,49,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,23,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,38,7,6,23, +49,0,1,13,14,20,1,32,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14,13, +1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1, +15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15, +32,15,1,1,128,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,147,28,89,15,1,1,15,89,28,10,10, +11,11,56,10,10,56,11,11,10,10,1,144,20,14,13,1,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14, +13,1,1,13,14,20,80,1,13,14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,224,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +45,29,1,15,15,1,29,11,11,10,10,56,11,11,56,10,10,11,11,0,0,9,0,0,255,192,2,128,1,192,0,36, +0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,148,0,0,1,22,23,49,22,23,21,6,7,6,21,22,23,6, +7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6, +7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54, +55,53,38,39,35,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22, +63,1,54,39,38,7,49,1,80,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14, +13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80, +1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1, +112,15,1,1,15,32,15,1,1,15,32,1,112,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29, +11,11,10,10,40,11,11,72,10,10,11,11,1,192,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14,13,1, +1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15, +1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1, +15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,10,0,0,255,192,2,128,1,192,0,36, +0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,141,0,152,0,0,1,22,23,49,22,23,21,6,7,6,21,22, +23,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53, +38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7, +22,23,39,21,22,23,54,55,53,38,39,6,7,1,80,20,14,13,1,30,17,17,2,51,14,23,96,1,13,14,20,20, +14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32, +15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15, +1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,192,1,13,14,20,184,25,35,35,41,76, +50,17,1,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15, +0,9,0,0,255,192,2,128,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114,0,132,0,157,0,0,1,22, +23,49,22,23,21,6,7,6,21,22,23,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,80,20,14, +13,1,30,17,17,2,51,14,23,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1, +15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176, +15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32, +80,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10, +11,11,37,37,11,11,10,10,36,36,1,192,1,13,14,20,184,25,35,35,41,76,50,17,1,80,20,14,13,1,1,13, +14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1, +15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,254,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,8,0,0, +255,192,2,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110,0,130,0,0,1,22,23,49,22,23,17,6, +7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53, +38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,55,50,23,49,22,21,51,22,23,21,6,7,35,17,35,17,52,55,54,51,1,80,20,14,13, +1,1,13,14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1, +1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15, +32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,176,14,9,9, +144,15,1,1,15,144,64,9,9,14,1,192,1,13,14,20,254,96,20,14,13,1,80,20,14,13,1,1,13,14,20,80, +1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15, +1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,48,1,15,32,15,1,1,15,32,15,1,96,9,9,14,1,15,128,15,1,254,192,1,224,14,9,9,0,0,0, +0,9,0,0,255,192,2,64,1,192,0,36,0,49,0,62,0,75,0,88,0,101,0,114,0,145,0,158,0,0,1,22, +23,49,22,23,21,6,7,21,6,7,21,20,23,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,49,22,23,21,50,23,22,29,1,20,7,6, +43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,80,20, +14,13,1,31,1,30,2,9,89,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15, +1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,192, +34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,192,1,13, +14,20,146,31,47,25,18,37,128,18,14,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254, +240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15, +32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32, +15,1,96,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48, +48,14,9,9,0,8,0,0,255,192,1,128,1,192,0,10,0,43,0,56,0,69,0,82,0,105,0,125,0,148,0,0, +1,21,6,7,38,39,53,54,55,22,23,55,22,23,49,22,23,17,6,7,6,7,35,53,38,39,38,39,6,7,6,7, +21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51, +54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,6, +7,21,35,53,51,54,55,38,39,35,23,22,23,49,22,23,54,55,54,55,53,38,39,38,39,6,7,6,7,21,39,38, +7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,1,64,1,15,15,1,1,15,15,1,16, +20,14,13,1,1,13,14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,88,15, +1,2,22,32,22,2,1,15,15,1,16,32,15,1,1,15,48,88,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,195,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,1,80,32,15,1,1,15,32,15,1,1, +15,112,1,13,14,20,254,96,20,14,13,1,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1, +254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,208,1,15,88,22,2,2,22,24,15,1,1,15,16,64,1,15,15,1,80,20,14,13,1,1,13,14,20,32,20, +14,13,1,1,13,14,20,32,73,9,3,4,11,96,15,1,1,15,43,52,9,3,4,11,96,15,1,1,15,43,52,0, +0,8,0,0,255,192,2,64,1,192,0,43,0,56,0,69,0,82,0,95,0,108,0,131,0,138,0,0,19,54,55,49, +54,55,33,22,23,22,23,21,7,35,6,7,21,20,21,48,21,22,23,22,23,6,43,1,53,38,39,38,39,6,7,6, +7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6, +7,21,39,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51, +54,55,53,38,39,35,6,7,21,23,54,31,1,22,23,22,7,6,7,6,7,6,39,38,39,38,39,38,55,52,63,1, +23,21,54,55,54,55,39,0,1,13,14,20,1,32,20,14,13,1,42,70,15,1,1,21,22,55,9,10,96,1,13,14, +20,20,14,13,1,96,20,14,13,1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1, +96,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15, +1,167,9,9,120,14,1,1,12,11,29,30,54,9,9,54,30,29,11,12,1,15,120,9,50,22,21,2,95,1,144,20, +14,13,1,1,13,14,20,159,17,1,15,64,1,1,1,45,56,56,44,4,80,20,14,13,1,1,13,14,20,80,1,13, +14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,82,4,4,48,6, +16,33,41,41,38,38,23,4,4,23,38,38,41,41,33,16,6,48,48,188,27,42,42,40,37,0,0,0,0,6,0,0, +255,192,1,128,1,192,0,32,0,45,0,58,0,71,0,94,0,119,0,0,1,22,23,49,22,23,17,6,7,6,7,35, +53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6, +7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,38,7,6, +7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,7,38,39,6,7,21,22,23,22,23,54,55,54, +55,53,38,39,6,7,21,6,7,38,39,53,1,80,20,14,13,1,1,13,14,20,96,1,13,14,20,20,14,13,1,96, +20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15, +32,80,1,15,32,15,1,1,15,32,15,1,19,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,125, +1,15,15,1,1,13,14,20,20,14,13,1,1,15,15,1,1,15,15,1,1,192,1,13,14,20,254,96,20,14,13,1, +80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32, +48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,201,9,3,4,11,96,15,1,1,15, +43,52,9,3,4,11,96,15,1,1,15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1,1,15, +64,15,1,1,15,64,0,0,0,9,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86,0,99,0,112, +0,130,0,151,0,0,1,22,23,49,22,23,17,6,7,6,21,20,23,35,53,38,39,38,39,6,7,6,7,21,35,38, +39,38,39,17,54,55,54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53, +38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,5,6,7,49,6,7,38,39,38, +39,54,55,54,55,22,23,22,23,7,54,55,49,54,55,51,22,23,22,23,20,7,6,43,1,34,39,38,53,49,1,80, +20,14,13,1,29,17,18,10,90,1,13,14,20,20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15, +32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15, +1,1,15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,1, +48,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,224,1,26,27,39,102,39,27,26,1,10,10,15,218,15, +10,10,1,192,1,13,14,20,254,192,16,29,28,36,19,16,80,20,14,13,1,1,13,14,20,80,1,13,14,20,1,160, +20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15, +32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32, +15,1,1,15,32,15,1,176,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,205,39,27,26,1,1,26,27, +39,15,10,10,10,10,15,0,0,16,0,0,255,192,2,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110, +0,123,0,136,0,149,0,162,0,176,0,189,0,200,0,211,0,222,0,0,19,54,55,49,54,55,33,22,23,22,23,17, +6,7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38, +39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,39,22,23,51, +54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35, +6,7,21,5,21,6,7,6,7,35,53,54,55,54,55,51,7,35,53,54,55,54,55,51,21,6,7,6,7,21,35,53, +54,55,54,55,51,21,6,7,6,7,39,21,35,38,39,38,39,53,51,22,23,22,23,39,38,39,49,38,39,53,51,22, +23,22,23,21,35,55,21,35,38,39,38,39,53,51,22,23,22,23,55,22,23,21,6,7,38,39,53,54,55,23,6,7, +38,39,53,54,55,22,23,21,39,22,23,21,6,7,38,39,53,54,55,0,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,96,1,13,14,20,20,14,13,1,96,20,14,13,1,80,15,1,1,15,32,15,1,1,15,32,80,1,15,32,15, +1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1, +15,32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,1,128,1,22,23,34,16,1,22,23,34,16,80,16, +1,22,23,34,16,1,22,23,34,16,1,22,23,34,16,1,22,23,34,48,16,34,23,22,1,16,34,23,22,1,16,34, +23,22,1,16,34,23,22,1,16,16,16,34,23,22,1,16,34,23,22,1,16,22,2,2,22,22,2,2,22,96,2,22, +22,2,2,22,22,2,168,22,2,2,22,22,2,2,22,1,144,20,14,13,1,1,13,14,20,254,96,20,14,13,1,80, +20,14,13,1,1,13,14,20,80,1,13,14,20,1,160,176,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32, +15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15, +1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,16,34,23,22,1,16,34,23,22,1,208,16,34,23, +22,1,16,34,23,22,1,112,16,34,23,22,1,16,34,23,22,1,16,16,1,22,23,34,16,1,22,23,34,96,1,22, +23,34,16,1,22,23,34,16,128,16,1,22,23,34,16,1,22,23,34,240,2,22,104,22,2,2,22,104,22,2,96,22, +2,2,22,32,22,2,2,22,32,56,2,22,32,22,2,2,22,32,22,2,0,1,0,0,255,192,2,0,1,192,0,48, +0,0,19,55,54,55,22,31,1,55,54,23,22,15,1,23,22,23,6,15,1,23,22,7,6,47,1,7,6,7,38,47, +1,7,6,39,38,63,1,39,38,39,54,63,1,39,38,55,54,31,1,201,32,6,17,17,6,34,71,14,10,11,4,26, +106,16,1,1,16,103,53,8,13,12,15,101,33,6,17,17,6,33,101,15,13,11,7,53,103,16,1,1,16,99,112,9, +12,14,17,163,1,76,99,16,1,1,16,106,26,4,10,11,14,71,34,6,17,17,6,33,101,15,12,13,8,53,103,16, +1,1,16,103,53,8,13,12,15,101,33,6,17,17,6,32,163,17,14,12,9,112,0,0,0,7,0,0,255,192,1,191, +1,192,0,10,0,50,0,59,0,68,0,77,0,89,0,100,0,0,19,6,7,38,39,53,54,55,22,23,21,7,51,50, +23,22,31,1,22,23,21,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39,38,61,1,54,63,1, +54,55,54,51,49,21,6,15,1,51,39,38,39,35,7,54,55,38,39,6,7,22,23,37,6,7,22,23,54,55,38,39, +1,54,31,1,22,7,6,47,1,38,55,49,33,54,23,22,15,1,6,39,38,63,1,248,2,22,22,2,2,22,22,2, +94,140,25,21,20,10,28,32,2,9,9,14,16,14,9,9,255,0,9,9,14,16,14,9,9,2,32,28,9,21,20,26, +11,4,19,208,19,5,10,140,58,22,2,2,22,22,2,2,22,1,0,22,2,2,22,22,2,2,22,254,167,17,17,48, +14,14,17,17,48,14,14,1,144,17,16,15,15,48,16,17,14,14,48,1,88,22,2,2,22,80,22,2,2,22,80,56, +15,14,24,79,15,37,136,14,9,9,9,9,14,32,32,14,9,9,9,9,14,136,37,15,79,24,14,15,64,1,10,53, +53,10,1,168,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,1,49,14,14,48,17,16,15,15,47,17, +17,14,14,17,17,47,15,15,16,17,48,0,0,5,0,0,255,192,2,0,1,192,0,8,0,17,0,26,0,52,0,91, +0,0,55,54,59,1,50,31,1,35,55,7,54,55,22,23,6,7,38,39,51,6,7,38,39,54,55,22,23,55,21,6, +7,6,7,35,33,35,38,39,38,39,53,54,55,54,55,54,55,22,23,22,23,22,23,3,50,55,49,54,61,1,38,47, +1,38,39,38,43,1,34,7,6,15,1,6,7,21,20,23,22,51,50,55,54,61,1,51,21,20,23,22,51,49,191,2, +5,116,5,2,13,157,14,47,2,22,22,2,2,22,22,2,224,2,22,22,2,2,22,22,2,144,1,18,18,27,64,255, +0,64,27,18,18,1,1,34,34,58,57,72,72,57,58,34,34,1,128,14,9,9,1,27,21,6,14,15,18,116,18,15, +14,6,21,27,1,9,9,14,14,9,9,192,9,9,14,170,6,6,42,42,106,22,2,2,22,22,2,2,22,22,2,2, +22,22,2,2,22,128,192,27,18,18,1,1,18,18,27,192,72,57,58,34,34,1,1,34,34,58,57,72,255,0,9,9, +14,104,33,16,64,18,10,11,11,10,18,64,16,33,104,14,9,9,9,9,14,32,32,14,9,9,0,0,0,3,0,0, +255,192,2,0,1,192,0,18,0,67,0,120,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +49,19,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,51,22,31,1,22,7,6,7,6,39,38,47, +1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,49,1,21,22,23,21,55,53,54,55,51,22,23,21,6, +15,1,21,51,22,23,21,6,7,35,23,22,7,35,38,39,53,35,34,39,38,61,1,52,55,54,51,53,54,55,53,38, +39,54,55,51,22,23,49,79,1,18,19,26,28,18,17,1,1,17,18,28,26,19,18,1,25,14,9,9,13,7,13,12, +12,11,3,3,7,52,29,52,12,52,29,52,7,3,3,11,12,12,13,7,13,9,9,14,14,9,9,16,9,9,14,1, +72,15,1,16,1,15,16,15,1,1,10,53,48,15,1,1,15,44,23,2,17,60,15,1,16,14,9,9,9,9,14,1, +15,15,1,1,15,32,15,1,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,64,9,9,14,179, +20,11,3,3,7,7,13,13,12,81,44,1,1,44,81,12,13,13,7,7,3,3,11,20,179,14,9,9,9,9,14,128, +128,14,9,9,1,240,116,9,19,109,5,56,15,1,1,15,85,11,4,17,27,1,15,16,15,1,92,18,2,1,15,96, +9,9,14,144,14,9,9,32,19,9,100,1,15,15,1,1,15,0,0,0,0,4,0,0,255,192,2,111,1,192,0,17, +0,76,0,95,0,146,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,53,35,34,39,38, +63,1,7,6,7,6,39,38,39,38,63,1,54,55,22,31,1,22,7,6,7,6,39,38,47,1,23,22,7,6,43,1, +21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,53,49,1,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,49,19,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54, +59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,95,1,18,19,26, +28,18,17,1,1,17,18,28,26,19,18,1,7,18,8,5,4,2,31,28,9,13,12,11,11,2,1,8,58,37,58,58, +37,59,7,1,2,11,11,12,13,8,29,30,3,4,5,8,18,9,9,14,14,9,9,16,9,9,14,14,9,9,1,72, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,56,9,9,14,14,9,9,13,7,13,13,12,11,2,3,7, +52,13,21,22,25,12,25,22,21,13,52,7,3,3,11,12,12,13,7,13,9,9,14,14,9,9,16,1,128,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,254,96,80,7,6,8,93,37,11,2,1,7,9,13,12,11,79,44,2, +2,44,79,11,12,13,9,7,1,2,11,37,93,8,6,7,80,14,9,9,9,9,14,80,80,14,9,9,9,9,14,1, +160,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,192,96,14,9,9,9,9,14,179,20,11,3,3,7, +7,13,13,12,81,21,12,13,13,12,21,81,12,13,13,7,7,3,3,11,20,179,14,9,9,9,9,14,96,0,0,0, +0,2,0,0,255,192,1,224,1,192,0,39,0,50,0,0,37,22,23,6,7,6,7,38,39,38,39,52,55,39,6,35, +38,39,38,39,54,55,54,55,22,23,55,54,55,54,55,22,23,22,23,6,7,6,15,1,39,23,54,63,1,38,39,7, +22,7,49,1,125,33,2,1,22,23,34,34,23,22,1,4,146,16,18,34,23,22,1,1,22,23,34,34,22,184,2,22, +23,33,34,23,22,1,1,17,17,27,37,225,146,7,9,37,6,5,185,1,4,82,23,43,34,23,22,1,1,22,23,34, +13,11,128,8,1,22,23,34,34,23,22,1,1,22,73,34,21,22,1,1,22,23,34,29,21,21,7,208,134,128,4,2, +208,4,5,74,11,10,0,0,0,4,0,0,255,192,1,128,1,192,0,29,0,47,0,79,0,97,0,0,1,51,22,23, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,54,55,54,55,22,23,22,23,7,50,55,49,54,53, +52,39,38,35,34,7,6,21,20,23,22,51,7,6,23,22,55,53,54,59,1,22,23,20,15,1,6,29,1,22,23,54, +63,1,54,55,38,39,38,39,35,6,15,1,23,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,27, +37,27,18,18,1,1,18,18,27,255,0,27,18,18,1,1,18,18,27,38,10,24,24,32,32,24,24,11,91,14,9,9, +9,9,14,14,9,9,9,9,14,87,5,19,23,9,2,6,58,14,1,8,44,12,2,22,22,1,33,31,1,1,17,18, +27,58,39,14,1,87,14,9,9,9,9,14,14,9,9,9,9,14,1,128,1,18,18,27,254,192,27,18,18,1,1,18, +18,27,1,64,27,18,18,1,28,18,17,1,1,17,18,28,64,9,9,14,14,9,9,9,9,14,14,9,9,103,21,9, +6,20,2,5,1,14,9,4,26,7,14,13,22,2,2,22,18,19,36,27,17,18,1,2,35,2,153,9,9,14,14,9, +9,9,9,14,14,9,9,0,0,6,0,0,255,192,2,63,1,192,0,33,0,44,0,56,0,67,0,79,0,133,0,0, +19,50,23,49,22,23,54,55,22,23,22,23,51,22,23,22,23,6,7,6,7,33,38,39,38,39,54,55,54,55,54,55, +54,55,3,6,39,38,63,1,54,23,22,15,1,37,22,15,1,6,39,38,63,1,54,23,49,5,6,39,38,63,1,54, +23,22,15,1,55,22,15,1,6,39,38,63,1,54,23,49,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,22,23,49,223,30,23,23,12,23,34,30,21,21,6,2,27,18,18,1,1,18,18,27,254,191,27,18,18,1, +1,18,18,27,1,27,27,41,130,13,20,18,9,48,13,20,18,9,48,1,119,18,9,48,13,20,18,9,48,13,20,254, +249,13,20,18,9,48,13,20,18,9,48,151,18,9,48,13,20,18,9,48,13,20,28,42,35,1,20,19,22,28,13,7, +7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22, +19,21,35,42,43,35,18,19,34,43,1,192,16,15,25,23,1,1,17,18,28,1,18,18,27,27,18,18,1,1,18,18, +27,27,18,18,1,41,27,27,1,254,140,18,9,13,20,80,18,9,13,20,80,113,13,20,80,18,9,13,20,80,18,9, +113,18,9,13,20,80,18,9,13,20,80,113,13,20,80,18,9,13,20,80,18,9,189,2,24,13,15,18,7,3,11,11, +13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15, +13,24,2,1,25,12,12,25,1,0,0,0,0,6,0,0,255,224,2,128,1,160,0,43,0,48,0,70,0,81,0,92, +0,110,0,0,1,22,23,49,22,23,17,6,7,6,7,35,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,59,1,55,35,38,39,38,39,17,54,55,54,55,33,5,21,33,53,33,37,22,23,49,22,23,17,6,7,6,7, +35,38,39,38,39,17,54,55,54,55,51,7,6,7,22,23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22, +31,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,144,20,14,13,1,1,13,14,20,133,10,75, +14,9,9,9,9,14,255,0,14,9,9,9,9,14,75,10,133,20,14,13,1,1,13,14,20,1,96,254,176,1,64,254, +192,2,16,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,64,48,15,1,1,15,32,15,1,1,15,32, +32,15,1,1,15,32,15,1,1,15,16,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,13,14,20,255,0,20, +14,13,1,32,9,9,14,14,9,9,9,9,14,14,9,9,32,1,13,14,20,1,0,20,14,13,1,64,224,224,64,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,64,1,15,15,1,1,15,15,1,96,1,15,15, +1,1,15,15,1,208,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,6,0,0,255,224,1,192,1,160,0,21, +0,40,0,62,0,84,0,106,0,128,0,0,19,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38, +61,1,7,54,31,1,22,7,6,15,1,6,39,38,47,1,38,55,54,63,1,23,50,23,49,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,59,1,23,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59, +1,5,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,39,50,23,49,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,59,1,192,9,9,14,64,14,9,9,9,9,14,64,14,9,9,54,26,18,32, +6,3,3,12,55,12,13,12,8,31,7,4,3,12,55,214,14,9,9,9,9,14,64,14,9,9,9,9,14,64,64,14, +9,9,9,9,14,64,14,9,9,9,9,14,64,255,0,9,9,14,64,14,9,9,9,9,14,64,14,9,9,64,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,1,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,110,11,24,55, +12,12,12,8,32,6,3,3,12,55,12,13,12,8,32,18,9,9,14,64,14,9,9,9,9,14,64,14,9,9,160,9, +9,14,64,14,9,9,9,9,14,64,14,9,9,32,14,9,9,9,9,14,64,14,9,9,9,9,14,64,32,9,9,14, +64,14,9,9,9,9,14,64,14,9,9,0,0,4,0,0,255,224,2,128,1,128,0,23,0,40,0,58,0,74,0,0, +1,22,23,49,22,23,6,15,1,6,7,6,15,1,6,47,1,38,39,54,55,54,55,33,3,55,6,21,22,23,33,38, +39,38,39,53,23,22,51,50,55,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7, +6,31,1,22,63,1,54,39,38,7,49,1,208,20,14,13,1,1,18,14,51,38,39,18,58,19,19,218,18,1,1,13, +14,20,1,160,170,27,1,1,39,254,216,27,18,18,1,218,17,21,21,17,1,90,2,40,41,61,61,41,40,2,2,40, +41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,1,13,14,20,24,14,11,5,30, +29,46,43,12,12,164,14,24,20,14,13,1,254,237,20,9,8,65,47,1,18,18,27,208,163,13,13,3,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,3,0,0, +255,193,2,64,1,192,0,48,0,68,0,80,0,0,1,54,23,22,7,3,22,23,55,54,23,22,15,1,35,38,39,38, +39,6,7,6,7,35,39,38,55,54,31,1,54,55,39,38,55,54,31,1,54,51,50,63,1,54,55,22,31,1,27,1, +22,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,55,33,1,22,23,21,6,7,38,39,53,54,55,49,1, +244,12,19,18,7,137,3,3,97,18,13,11,14,86,71,11,24,24,32,32,24,24,10,80,76,15,7,10,19,97,5,5, +63,8,14,15,16,102,1,1,1,2,13,4,20,20,4,13,175,44,14,9,9,9,9,14,254,0,14,9,9,9,9,14, +2,0,255,0,22,2,2,22,22,2,2,22,1,181,16,8,11,20,254,207,3,4,55,8,15,16,14,87,28,18,17,1, +1,17,18,28,51,13,17,17,4,31,6,6,104,17,13,12,12,88,1,1,142,21,2,2,21,142,1,25,254,76,1,9, +9,13,14,9,9,9,9,14,13,9,9,1,1,191,2,21,48,23,1,1,23,48,21,2,0,4,0,0,255,192,2,63, +1,192,0,23,0,62,0,67,0,121,0,0,1,50,23,49,22,21,51,22,23,22,15,1,33,39,38,55,54,55,51,54, +55,54,59,1,5,33,50,23,22,29,1,20,15,1,34,35,6,7,6,7,35,38,39,38,35,34,7,6,7,35,38,39, +38,47,1,38,61,1,52,55,54,51,35,23,33,53,33,21,5,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,22,23,49,1,96,14,9,9,75,16,6,6,10,21,254,175,20,10,6,6,16,74,1,9,9,13,129,254,255, +1,129,14,9,9,12,51,1,1,3,1,24,27,16,27,24,17,20,20,17,23,27,17,27,24,3,3,51,12,9,9,14, +1,32,1,65,254,191,1,1,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7, +9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,192,9,9,14, +1,13,13,13,24,24,13,13,13,1,14,9,9,128,9,9,14,124,20,17,72,2,1,17,3,4,16,12,12,16,4,3, +17,2,1,72,17,20,124,14,9,9,160,96,96,160,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1, +3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1, +0,5,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,60,0,71,0,0,19,54,55,49,54,55,51,21,20,23, +22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,0,1, +18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,32,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,128, +27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2, +2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15, +0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,62,0,0,19,54,55,49,54,55,51,21,20,23,22,59, +1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,5,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,39,35,6,7,22,23,51,54,55,38,39,0,1,18,18,27,160,9,9,14,128,56,36,35, +1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,80,128,15,1,1,15,128,15,1,1,15,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24, +1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1, +1,15,14,2,0,5,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,60,0,95,0,0,19,54,55,49,54,55, +51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,22,23,54,55,53,54,55,51, +22,23,20,15,1,6,29,1,22,23,54,55,53,55,54,55,52,39,38,43,1,34,7,6,29,1,0,1,18,18,27,160, +9,9,14,128,56,36,35,1,20,20,34,5,5,255,0,27,18,18,1,1,0,128,128,32,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,64,1,15,15,1,1,9,40,13,1,7,32,9,1,15, +15,1,24,23,1,13,13,20,40,18,12,12,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37,24,1, +1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2, +22,22,2,136,15,1,1,15,6,9,1,1,13,8,4,17,5,9,15,15,1,1,15,5,12,15,26,20,13,13,12,12, +18,6,0,0,0,4,0,0,255,192,2,64,1,192,0,28,0,32,0,55,0,62,0,0,19,54,55,49,54,55,51,21, +20,23,22,59,1,21,7,6,7,6,23,22,23,6,35,33,38,39,38,39,17,5,53,23,35,23,54,31,1,22,23,22, +7,6,7,6,7,6,39,38,39,38,39,38,55,52,63,1,23,21,54,55,54,55,39,0,1,18,18,27,160,9,9,14, +128,93,33,2,1,20,20,55,13,17,255,0,27,18,18,1,1,0,128,128,167,9,9,120,14,1,1,12,11,29,30,54, +9,9,54,30,29,11,12,1,15,120,9,50,22,21,2,95,1,128,27,18,18,1,128,14,9,9,47,37,15,37,45,58, +58,47,8,1,18,18,27,1,128,64,128,128,98,4,4,48,6,16,33,41,41,38,38,23,4,4,23,38,38,41,41,33, +16,6,48,48,188,27,42,42,40,37,0,0,0,6,0,0,255,192,2,128,1,192,0,25,0,49,0,101,0,119,0,137, +0,155,0,0,1,54,55,54,23,22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,54,23,22,23,49,23,38, +39,7,38,39,38,39,38,39,6,7,6,21,22,23,22,51,50,55,54,55,54,39,5,52,55,49,54,55,51,22,23,22, +21,20,7,6,35,21,33,53,34,39,38,53,52,55,54,55,51,22,23,22,29,1,50,23,22,29,1,20,7,6,35,33, +34,39,38,61,1,52,55,54,51,53,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +1,93,12,15,10,10,37,23,23,1,2,45,45,68,69,45,44,2,1,31,31,51,9,11,29,26,41,3,4,36,1,14, +14,15,15,3,22,12,11,1,23,22,34,28,22,23,5,5,13,254,154,9,9,14,32,14,9,9,9,9,14,1,192,14, +9,9,9,9,14,32,14,9,9,14,9,9,9,9,14,253,192,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14, +9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,255,0,14,9,9,9,9,14,14,9,9,9,9,14, +1,131,15,14,8,8,36,45,45,32,68,46,46,2,2,46,46,68,41,49,50,46,8,8,26,31,115,6,6,42,1,18, +18,19,19,4,27,19,19,17,37,20,21,15,17,26,27,26,111,13,9,9,1,1,9,9,13,14,9,9,65,65,9,9, +14,13,9,9,1,1,9,9,13,97,9,9,14,64,14,9,9,9,9,14,64,14,9,9,97,193,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,0,255,224,2,64,1,160,0,51,0,69,0,0,1,22,23,49,22,23,22,23,22,23,22,7,6,7,6,7, +6,7,6,15,1,6,39,38,63,1,38,39,38,39,7,6,39,38,63,1,39,38,55,54,31,1,54,55,54,55,39,38, +55,54,31,2,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,97,41,35,34,27,29,21,21,11,8, +8,11,21,21,29,27,34,35,41,78,17,19,18,4,9,29,24,23,17,93,21,18,15,10,46,46,10,15,18,21,93,17, +23,24,29,9,4,18,19,17,78,63,14,9,9,9,9,14,14,9,9,9,9,14,1,95,3,15,15,20,23,24,24,19, +16,16,19,24,24,23,20,15,15,3,59,12,11,12,21,49,14,17,18,19,55,10,15,18,21,80,80,21,18,15,10,55, +19,18,17,14,49,21,12,11,12,59,127,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,128, +1,192,0,28,0,33,0,69,0,80,0,0,55,6,35,38,39,38,39,17,34,39,38,53,52,55,54,59,1,50,23,22, +21,20,7,6,35,21,7,6,21,3,51,53,35,21,37,50,23,49,22,21,20,7,6,35,21,23,22,21,6,7,6,7, +33,38,39,38,39,54,63,1,53,34,39,38,39,54,55,54,59,1,7,21,20,15,1,51,39,38,61,1,35,160,16,16, +41,27,27,1,14,9,9,9,9,14,192,14,9,9,9,9,14,49,15,64,64,64,1,160,14,9,9,9,9,14,118,10, +1,19,20,29,254,202,29,20,20,1,1,10,117,13,9,9,1,1,9,9,13,193,128,5,48,171,49,5,64,5,5,1, +27,27,41,1,32,9,9,14,14,9,9,9,9,14,14,9,9,246,79,25,29,1,27,96,96,160,9,9,14,14,9,9, +151,191,17,20,29,20,19,1,1,19,20,29,20,17,191,151,9,9,14,14,9,9,64,160,9,8,79,79,8,9,160,0, +0,2,0,0,255,192,1,128,1,192,0,20,0,32,0,0,1,50,23,22,7,3,6,7,6,7,35,38,39,38,39,3, +38,55,54,51,33,7,22,55,54,23,22,63,2,35,31,1,1,96,14,9,10,1,29,3,22,22,33,166,33,22,22,3, +29,1,10,9,14,1,64,255,31,31,33,33,31,31,24,7,252,7,24,1,192,10,10,14,254,108,32,21,20,1,1,20, +21,32,1,148,14,10,10,169,14,14,16,16,14,14,12,93,93,12,0,0,0,3,0,0,255,192,1,128,1,192,0,19, +0,40,0,52,0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,54,23,22,23,22,23,55,50,23,22,7,3, +6,7,6,7,35,38,39,38,39,3,38,55,54,51,33,1,22,55,54,23,22,63,2,35,31,1,1,0,1,18,18,27, +27,18,18,1,2,17,18,15,12,12,15,18,17,2,96,14,9,10,1,29,3,22,22,33,166,33,22,22,3,29,1,10, +9,14,1,64,255,0,32,32,32,32,32,32,12,18,252,17,13,252,25,17,17,1,1,17,17,25,20,27,28,18,12,12, +18,28,27,20,196,10,10,14,254,108,32,21,20,1,1,20,21,32,1,148,14,10,10,254,208,15,15,15,15,15,15,6, +234,234,6,0,0,6,0,9,255,202,1,246,1,182,0,44,0,86,0,130,0,174,0,204,0,234,0,0,19,20,7,49, +20,21,6,7,6,7,34,35,6,7,6,7,6,39,38,39,38,55,54,55,38,39,54,55,54,55,50,23,54,55,54,23, +22,23,22,7,6,7,6,7,49,55,54,51,22,23,22,23,20,7,22,23,22,7,6,7,6,39,38,39,38,39,34,35, +38,39,38,39,52,53,38,39,38,39,38,55,54,55,54,23,22,23,49,1,50,51,22,23,22,23,20,21,22,21,22,23, +22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,54,55,38,39,38,55,54,55,54,23,22,23,22,23,49,5, +22,21,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,52,53,38,53,54,55,54,55,50,51,54,55, +54,55,54,23,22,23,22,7,6,7,49,37,22,23,22,7,6,39,38,39,38,53,54,55,39,38,55,54,59,1,22,23, +21,6,7,6,47,1,6,21,49,55,54,23,22,23,22,23,6,7,23,22,7,6,43,1,38,39,53,52,55,54,31,1, +54,55,38,39,38,55,49,160,1,1,17,18,28,2,3,11,7,4,11,12,13,13,6,6,4,9,18,6,1,1,18,18, +27,15,12,29,32,13,11,11,5,3,6,6,13,22,19,230,12,13,28,18,17,1,5,17,10,4,6,6,13,13,12,11, +4,6,12,3,3,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,254,212,3,2,28,18,17,1,1,19,22, +13,6,6,3,5,11,11,13,32,29,12,15,27,18,18,1,1,6,18,9,4,6,6,13,13,12,11,4,7,11,1,128, +5,1,17,18,28,13,12,29,32,13,11,11,5,3,6,6,13,22,19,1,1,18,19,26,4,3,11,7,4,11,12,13, +13,6,6,4,10,17,254,231,2,33,18,8,12,20,28,16,17,1,28,11,6,3,3,7,60,10,1,1,6,6,5,15, +15,82,12,21,27,17,16,1,1,28,11,5,3,3,6,61,9,1,6,6,6,15,14,1,2,33,19,8,1,102,2,1, +2,1,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,12,14,27,18,18,1,6,18,9,4,6,6,13,13, +12,11,4,7,11,52,6,1,18,18,27,14,12,29,32,13,11,11,5,3,6,6,13,22,19,1,18,18,27,3,3,11, +7,4,11,12,13,13,6,6,4,9,18,254,198,1,18,18,27,1,2,1,2,11,7,4,12,11,13,13,6,6,4,10, +17,5,1,1,18,18,27,14,12,29,32,13,11,11,5,3,6,6,13,22,19,38,12,14,27,18,18,1,1,5,17,10, +4,6,6,13,13,11,12,4,7,11,1,2,1,2,27,18,18,1,19,22,13,6,6,3,5,11,11,13,32,29,133,39, +18,12,20,19,8,15,26,26,33,44,31,11,6,6,6,1,9,61,6,3,3,5,15,17,24,91,19,8,15,26,26,33, +45,30,12,5,6,6,1,9,61,7,2,3,4,16,17,24,39,18,12,20,0,2,0,0,255,224,2,0,1,160,0,36, +0,73,0,0,1,23,22,23,22,7,6,7,6,47,1,35,6,7,22,23,51,22,23,22,7,6,43,1,34,47,1,7, +38,39,53,54,55,51,50,23,49,3,39,38,39,38,55,54,55,54,31,1,51,54,55,38,39,35,38,39,38,55,54,59, +1,50,31,1,51,22,23,21,6,7,33,34,39,49,1,73,103,13,3,2,10,10,16,16,14,87,106,14,2,2,14,63, +26,8,2,10,9,16,112,41,32,47,8,13,2,2,13,251,35,28,178,135,13,3,2,10,10,16,16,14,119,121,15,1, +1,15,78,27,7,2,10,9,15,128,42,32,47,23,15,1,1,15,254,229,35,27,1,140,68,10,16,16,14,13,3,2, +10,57,2,14,15,1,2,26,15,10,11,25,39,1,1,16,95,15,1,20,254,104,100,10,16,16,14,13,3,2,10,88, +1,15,15,1,2,25,15,11,11,26,38,1,15,96,15,1,20,0,0,0,0,8,0,0,255,192,2,128,1,192,0,17, +0,35,0,73,0,91,0,135,0,153,0,171,0,189,0,0,1,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,7,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,21,50,23,49,22,21,51,22,23,21,20,21, +22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,38,61,1,54,55,51,52,55,54,51,17,54,55,49,54,55, +38,39,38,39,6,7,6,7,22,23,22,23,55,54,55,38,61,1,52,55,54,59,1,52,55,54,55,22,23,22,21,51, +50,23,22,29,1,20,21,22,23,22,23,6,7,6,7,38,39,38,39,54,53,52,39,49,55,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,47,1,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,23,52,55,49, +54,51,50,23,22,21,20,7,6,35,34,39,38,53,1,48,9,9,14,14,9,9,9,9,14,14,9,9,144,9,9,14, +14,9,9,9,9,14,14,9,9,14,9,9,8,22,2,43,26,26,1,2,45,45,68,68,45,45,2,1,26,26,44,1, +2,22,8,9,9,14,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,178,26,53,1,7,7,10,8,9,9, +14,14,9,9,8,10,7,7,43,26,26,1,2,45,45,68,48,37,37,20,14,14,142,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,144,9,9,14,14,9,9,9,9,14,14,9,9,80,9,9,14,14,9,9,9,9,14,14,9, +9,1,160,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,48,9,9,14, +2,22,16,3,2,19,39,39,50,68,45,45,2,2,45,45,68,50,39,39,19,2,3,16,22,2,14,9,9,254,192,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,169,51,23,2,4,16,10,7,7,13,9,9,1,1,9,9,13, +7,7,10,16,4,2,19,39,39,50,68,45,45,2,1,23,24,39,34,39,39,34,23,1,27,27,41,41,27,27,1,1, +27,27,41,41,27,27,1,224,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9, +14,0,0,0,0,2,0,32,255,192,2,96,1,192,0,74,0,98,0,0,19,23,22,55,54,47,1,38,55,54,55,54, +23,22,31,1,22,23,21,51,53,52,63,1,54,55,54,23,22,23,22,15,1,6,23,22,63,1,53,52,55,54,51,50, +23,22,29,1,20,15,1,51,22,23,6,7,33,38,39,54,55,51,39,38,61,1,52,55,54,51,50,23,22,21,7,19, +34,39,49,38,53,52,55,54,51,33,22,23,6,7,35,21,35,53,35,21,35,53,35,95,70,10,15,15,10,28,8,1, +1,10,11,12,13,9,47,23,1,65,25,47,9,13,12,11,10,1,1,9,27,10,15,14,11,69,9,9,14,14,9,9, +14,86,4,22,2,2,22,254,128,22,2,2,22,4,86,14,9,9,14,14,9,9,1,32,10,7,7,7,7,10,1,129, +22,2,2,22,32,128,65,128,32,1,47,92,12,7,11,16,36,10,12,13,8,9,1,1,10,52,29,38,94,94,38,29, +52,10,1,1,9,8,13,12,10,36,16,11,7,12,92,113,14,9,9,9,9,14,182,22,17,99,2,22,22,2,2,22, +22,2,99,17,22,182,14,9,9,9,9,14,113,254,177,7,7,10,10,7,7,2,22,22,2,32,32,32,32,0,0,0, +0,4,0,0,255,192,2,128,1,192,0,17,0,47,0,92,0,136,0,0,1,54,55,49,54,51,50,23,22,21,20,7, +6,35,34,39,38,39,23,22,7,6,47,1,35,7,6,39,38,63,1,7,6,39,38,63,1,54,51,50,31,1,22,7, +6,47,1,23,37,50,23,49,22,29,1,22,31,1,22,55,54,55,54,47,1,38,53,52,55,54,51,50,31,1,22,23, +21,6,7,6,7,35,34,47,1,38,39,53,52,55,54,51,35,5,21,6,15,1,6,43,1,38,39,38,39,53,54,63, +1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1,52,55,54,55,22,23,22,29,1,1,23,1, +11,12,16,18,11,12,12,11,18,16,12,11,1,97,1,23,21,5,4,8,4,5,22,22,1,11,19,19,15,13,16,27, +30,38,38,30,28,15,13,15,18,20,11,254,175,18,11,11,1,19,51,14,17,10,1,1,8,48,9,9,10,13,13,10, +72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17,1,2,89,1,27,100,20,25,67,20,14,13,1,1,32,72, +10,13,13,10,9,9,48,8,1,1,10,17,14,51,19,12,11,17,17,11,12,1,152,17,11,12,12,11,17,17,11,12, +12,11,17,213,22,5,1,23,35,35,23,1,5,22,89,16,14,16,18,16,23,25,25,23,16,18,16,14,16,89,189,12, +11,17,160,27,19,51,12,9,7,11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13,1,19,100,29,38,222, +17,11,12,40,222,38,29,100,19,1,13,14,20,79,46,33,73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19, +27,161,16,12,11,1,1,11,12,16,1,0,0,3,0,0,255,192,2,128,1,192,0,17,0,62,0,106,0,0,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,47,1,50,23,49,22,29,1,22,31,1,22,55,54,55,54,47, +1,38,53,52,55,54,51,50,31,1,22,23,21,6,7,6,7,35,34,47,1,38,39,53,52,55,54,51,35,5,21,6, +15,1,6,43,1,38,39,38,39,53,54,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1, +52,55,54,55,22,23,22,29,1,191,2,36,36,54,55,36,37,1,1,37,36,55,54,36,36,2,152,18,11,11,1,19, +51,14,17,10,1,1,8,48,9,9,10,13,13,10,72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17,1,2, +89,1,27,100,20,25,67,20,14,13,1,1,32,72,10,13,13,10,9,9,48,8,1,1,10,17,14,51,19,12,11,17, +17,11,12,1,64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,64,12,11,17,160,27,19,51,12,9,7, +11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13,1,19,100,29,38,222,17,11,12,40,222,38,29,100,19, +1,13,14,20,79,46,33,73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19,27,161,16,12,11,1,1,11,12, +16,1,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,74,0,0,37,22,23,7,6,35,34,47,1,38, +55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22,23,22, +23,6,7,6,7,38,39,38,39,55,7,6,23,22,59,1,7,6,23,22,63,1,54,39,38,43,1,55,54,39,38,7, +49,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75, +49,50,2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,177,96,7,3,3,8,36,30,4,6,7,8, +96,7,3,3,8,36,31,3,6,7,8,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35, +29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,82,72,6,8,8,54,8, +7,5,4,72,6,8,8,54,8,8,4,4,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,66,0,0,37,22, +23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,33, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7, +49,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75, +49,50,2,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72, +10,10,11,11,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50, +49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10, +10,0,0,0,0,4,0,0,255,192,2,64,1,160,0,32,0,50,0,59,0,70,0,0,37,22,23,7,6,35,34,47, +1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22, +23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1, +0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50, +2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1, +1,15,14,2,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50, +49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1, +15,80,15,1,1,15,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,61,0,0,37,22,23,7,6,35, +34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,33,6,7,49,6, +7,38,39,38,39,54,55,54,55,22,23,22,23,39,35,6,7,22,23,51,54,55,38,39,1,0,1,28,6,10,13,13, +9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,1,64,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1,1,15,80,54,43,5,10,10,199,46,60, +59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,0,3,0,0,255,192,2,64,1,160,0,32,0,50,0,75, +0,0,37,22,23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,7,38,35,6, +7,6,7,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,38,39,6,7,21,35,6,7,22,23, +51,21,22,23,54,55,53,51,54,55,38,39,35,53,1,0,1,28,6,10,13,13,9,194,42,2,3,47,42,53,52,40, +19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40, +2,160,1,15,15,1,48,15,1,1,15,48,1,15,15,1,48,15,1,1,15,48,80,54,43,5,10,10,199,46,60,59, +43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17,2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,0,3,0,0, +255,192,2,64,1,160,0,32,0,50,0,75,0,0,37,22,23,7,6,35,34,47,1,38,55,54,55,54,23,22,31,1, +55,54,55,54,23,22,23,22,7,38,35,6,7,6,7,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,0,1,28,6,10, +13,13,9,194,42,2,3,47,42,53,52,40,19,19,40,52,52,44,32,11,11,10,34,41,75,49,50,2,32,2,40,41, +61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37, +11,11,10,10,36,36,80,54,43,5,10,10,199,46,60,59,43,35,4,5,39,21,21,39,5,4,35,29,39,39,39,17, +2,50,49,75,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,0,0,5,0,34,255,194,2,30,1,190,0,11,0,23,0,34, +0,46,0,87,0,0,1,53,22,23,22,23,35,38,39,38,39,49,17,53,54,55,54,55,51,6,7,6,7,49,37,51, +22,23,22,23,21,38,39,38,39,19,21,6,7,6,7,35,54,55,54,55,49,7,51,53,52,55,54,51,50,23,22,29, +1,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,52,55,54,51,50,23,22,29,1,1,64, +89,60,61,12,65,11,42,43,61,61,43,42,11,65,12,61,60,89,254,226,65,11,42,43,61,89,60,61,12,222,61,43, +42,11,65,12,61,60,89,16,96,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14, +9,9,1,125,65,12,61,60,89,61,43,42,11,254,69,65,11,42,43,61,89,60,61,12,222,61,43,42,11,65,12,61, +60,89,1,30,65,11,42,43,61,89,60,61,12,222,64,14,9,9,9,9,14,192,14,9,9,9,9,14,64,64,14,9, +9,9,9,14,192,14,9,9,9,9,14,64,0,4,0,0,255,192,2,0,1,192,0,38,0,43,0,66,0,91,0,0, +37,50,23,49,22,21,20,7,6,43,1,21,23,51,22,23,6,7,35,34,47,1,35,38,39,38,39,53,54,55,54,55, +54,55,22,23,22,23,49,7,35,7,23,53,39,38,7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6, +7,21,39,7,38,39,6,7,21,22,23,22,23,54,55,54,55,53,38,39,6,7,21,6,7,38,39,53,1,224,14,9, +9,9,9,14,112,2,86,22,2,2,22,96,10,6,129,127,38,24,25,1,1,32,32,54,54,67,98,66,67,9,160,46, +33,79,35,7,11,10,1,1,15,15,1,35,7,11,10,1,1,15,15,1,35,125,1,15,15,1,1,13,14,20,20,14, +13,1,1,15,15,1,1,15,15,1,224,9,9,14,14,9,9,175,1,2,22,22,2,7,121,1,25,24,38,56,67,54, +54,32,32,1,2,63,63,96,64,56,73,129,185,9,3,4,11,96,15,1,1,15,43,52,9,3,4,11,96,15,1,1, +15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1,1,15,64,15,1,1,15,64,0,4,0,32, +255,192,2,97,1,160,0,51,0,69,0,87,0,104,0,0,19,38,53,54,55,54,55,22,23,54,55,22,23,22,23,20, +7,20,7,22,23,22,21,6,7,23,22,51,50,55,54,53,52,39,38,35,34,7,39,54,51,50,23,22,21,20,7,6, +7,6,39,1,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,7,52,55,49,54,51,50,23,22,21, +20,7,6,35,34,39,38,53,3,22,7,49,6,7,33,38,39,38,39,17,54,55,54,23,1,161,1,1,13,14,20,35, +11,23,43,34,23,22,1,2,1,23,14,14,2,35,82,12,16,16,12,12,12,12,16,16,12,34,27,35,35,27,26,26, +24,30,31,26,254,201,1,95,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9, +9,24,19,9,10,27,254,195,34,23,22,1,2,23,22,21,1,100,1,100,6,6,20,14,13,1,2,33,33,2,1,22, +23,34,8,7,3,4,9,19,20,26,44,24,81,12,12,12,16,16,12,13,13,34,26,26,27,35,35,27,23,3,2,17, +1,54,28,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,254,228,21,22, +23,2,1,22,23,34,1,61,27,10,9,18,254,155,0,0,0,5,0,0,255,192,2,64,1,160,0,18,0,35,0,54, +0,72,0,90,0,0,19,38,63,1,54,59,1,50,31,1,22,15,1,6,43,1,34,47,1,19,22,7,49,6,7,33, +38,39,38,39,17,54,55,54,23,1,55,38,61,1,52,63,1,54,31,1,22,29,1,20,15,1,6,47,1,1,20,7, +49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38, +53,252,4,4,27,5,9,54,9,5,27,4,4,27,5,9,54,9,5,27,172,19,9,10,27,254,195,34,23,22,1,2, +23,22,21,1,100,32,8,8,48,7,9,48,8,8,48,9,7,48,254,248,9,9,14,14,9,9,9,9,14,14,9,9, +160,9,9,14,14,9,9,9,9,14,14,9,9,1,88,8,8,48,8,8,48,8,8,48,8,8,48,254,172,21,22,23, +2,1,22,23,34,1,61,27,10,9,18,254,155,67,5,9,54,9,5,27,4,4,27,5,9,54,9,5,27,4,4,27, +1,57,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,0,0,3,0,0, +255,192,2,128,1,192,0,46,0,64,0,80,0,0,37,35,34,7,6,29,1,20,7,6,43,1,34,35,48,49,34,43, +1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,6,7,35,5,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,1, +64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,212,13,13,70, +49,49,7,1,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11, +72,10,10,11,11,96,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2, +2,44,45,69,16,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72, +11,11,10,10,0,4,0,0,255,192,2,128,1,192,0,46,0,64,0,73,0,84,0,0,37,35,34,7,6,29,1,20, +7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1, +38,35,6,7,6,7,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7, +22,23,39,21,22,23,54,55,53,38,39,6,7,1,64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32, +14,9,9,10,1,0,11,11,12,10,212,13,13,70,49,49,7,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,96,9,9,14,88,17,11,12,12,11,17, +112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2,2,44,45,69,16,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,0,3,0,0, +255,192,2,128,1,192,0,46,0,64,0,89,0,0,37,35,34,7,6,29,1,20,7,6,43,1,34,35,48,49,34,43, +1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,6,7,35,23,54,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63, +1,23,22,55,54,47,1,55,1,64,64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1, +0,11,11,12,10,212,13,13,70,49,49,7,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10, +10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,96,9,9,14,88,17,11,12,12, +11,17,112,1,2,69,1,9,9,13,14,10,224,9,1,7,187,2,2,44,45,69,16,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37, +0,3,0,0,255,192,2,128,1,192,0,49,0,75,0,99,0,0,37,21,35,34,7,6,29,1,20,7,6,43,1,34, +35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,38,7,6,7,6, +7,6,21,49,55,54,55,54,23,22,23,22,23,6,7,6,7,38,39,38,39,54,55,54,55,54,23,22,23,49,23,38, +39,7,38,39,38,39,38,39,6,7,6,21,22,23,22,51,50,55,54,55,54,39,1,32,32,14,9,9,12,11,17,56, +2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,137,19,15,54,34,16,10,11,221,12,15,10,10, +37,23,23,1,2,45,45,68,69,45,44,2,1,31,31,51,9,11,29,26,41,3,4,36,1,14,14,15,15,3,22,12, +11,1,23,22,35,27,22,23,5,5,13,98,2,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14, +10,224,9,1,7,121,1,13,49,54,25,28,27,27,128,16,15,6,7,36,45,45,32,68,46,46,2,2,46,46,68,41, +49,50,46,8,8,26,32,114,6,6,43,1,18,18,19,19,4,27,19,19,17,37,20,21,16,16,27,27,26,0,0,0, +0,2,0,0,255,192,2,128,1,192,0,20,0,59,0,0,1,50,23,49,22,21,51,22,23,21,6,7,35,17,35,17, +52,55,54,51,49,3,49,51,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1,20,7,6,43,1,34,39,38, +61,1,35,38,39,38,63,1,54,31,1,17,1,224,14,9,9,112,15,1,1,15,112,64,9,9,14,64,1,65,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,33,20,9,7,16,224,21,21,139,1,192,9,9,14,1,15,128, +15,1,254,192,1,224,14,9,9,254,0,9,9,14,96,14,9,9,9,9,14,96,14,9,9,9,9,14,192,1,20,21, +14,192,16,16,119,254,159,0,0,3,0,0,255,192,2,63,1,192,0,34,0,88,0,142,0,0,1,22,7,6,7,35, +23,6,7,6,7,38,39,38,35,34,7,6,7,38,39,34,39,38,35,53,35,38,39,38,63,1,54,31,1,7,54,23, +22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6, +7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,49,23,51,54,23,22,23,22,23,22,7,6,7,6, +39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23, +54,55,54,23,22,23,54,55,49,1,227,17,6,8,22,17,1,3,2,29,30,30,29,17,20,20,17,26,33,31,28,1, +1,1,2,16,22,8,6,17,176,19,19,176,213,18,19,34,43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12, +38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35, +191,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11, +11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,42,35,1,58,14,22,21,1,73,2,1,20,1,1, +20,12,12,19,2,1,20,1,2,73,1,21,22,14,128,12,12,128,176,12,12,25,1,2,24,13,15,18,7,3,11,11, +13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15, +13,24,2,1,25,112,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25, +15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,2,24,0,5,0,0,255,192,2,95, +1,192,0,17,0,39,0,73,0,127,0,181,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +39,23,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,38,7,6,23,49,63,1,54,31,1,22,7,6,7,35, +23,38,39,38,35,38,7,6,7,38,39,38,35,34,7,6,7,54,55,54,53,52,39,49,19,54,55,51,54,23,22,23, +22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55, +54,55,54,23,49,22,23,54,55,54,23,22,23,49,7,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39, +38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54, +55,54,23,49,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,147,28,89,15,1,1,15,89,28,10, +10,11,11,56,10,10,56,11,11,10,10,160,80,19,19,176,17,6,8,22,17,1,4,3,17,21,21,19,29,30,30,29, +17,20,20,17,15,18,32,19,18,18,115,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31, +9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,77,34, +43,42,35,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38, +13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,1,48,61,41,40,2,2,40,41,61,61,41,40,2, +2,40,41,61,45,29,1,15,15,1,29,11,11,10,10,56,11,11,56,10,10,11,11,35,58,12,12,128,14,22,21,1, +84,2,2,15,1,12,20,1,1,20,12,12,10,6,24,36,37,43,43,37,254,240,2,24,13,15,18,7,3,11,11,13, +13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13, +24,2,1,25,12,12,25,1,86,25,1,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4, +4,4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,0,0,3,0,0, +255,192,2,128,1,192,0,59,0,90,0,103,0,0,5,20,23,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29, +1,20,7,6,43,1,34,35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50, +31,1,6,7,6,7,21,6,7,21,19,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1, +52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,128,9,1,17,11,12,9,9,14, +64,14,9,9,12,11,17,56,2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,181,34,20,20,1, +30,2,144,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,32, +18,14,12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14,10,224,9,1, +7,159,12,29,28,37,25,18,37,128,1,32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48, +34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,0,4,0,0,255,192,2,128,1,192,0,51,0,58,0,76, +0,92,0,0,37,22,23,49,22,23,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6, +7,49,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23,51,50,55,49,55,51,20,21,6,49,53,5, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7, +49,1,65,3,20,19,32,254,245,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16, +48,14,2,56,14,2,2,14,56,2,14,48,6,4,7,1,1,1,56,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,66,40,34,34,22,1,18,18,27,160,1,9,9,13, +14,10,224,9,1,7,187,2,1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61, +41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0, +0,5,0,0,255,192,2,128,1,192,0,51,0,58,0,76,0,85,0,96,0,0,37,22,23,49,22,23,33,38,39,38, +39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,38,35,6,7,49,35,53,38,39,35,6,7,21,35,6,7,21, +22,23,51,21,22,23,51,50,55,49,55,51,20,21,6,49,53,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1,65,3,20,19,32,254,245,27, +18,18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16,48,14,2,56,14,2,2,14,56,2, +14,48,6,4,7,1,1,24,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2, +22,17,2,14,15,1,1,15,14,2,66,40,34,34,22,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,187,2, +1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,4,0,0, +255,192,2,128,1,192,0,51,0,58,0,76,0,101,0,0,37,22,23,49,22,23,33,38,39,38,39,53,35,38,39,38, +53,52,55,37,54,23,50,31,1,38,35,6,7,49,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23, +51,50,55,49,55,51,20,21,6,49,53,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,65,3,20,19,32,254,245,27,18, +18,1,32,14,9,9,10,1,0,11,11,12,10,212,13,13,65,47,56,1,16,48,14,2,56,14,2,2,14,56,2,14, +48,6,4,7,1,1,24,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11, +10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,66,40,34,34,22,1,18,18,27,160,1,9,9,13,14,10, +224,9,1,7,187,2,1,39,56,15,1,1,15,56,1,15,48,15,1,56,15,1,2,70,1,1,1,3,56,61,41,40, +2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36, +10,10,11,11,37,37,0,0,0,3,0,0,255,192,2,128,1,192,0,20,0,39,0,68,0,0,1,50,23,49,22,21, +51,22,23,21,6,7,35,17,35,17,52,55,54,51,49,3,49,51,33,34,39,38,61,1,35,38,39,38,63,1,54,31, +1,17,3,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,1, +224,14,9,9,112,15,1,1,15,112,64,9,9,14,64,1,254,191,14,9,9,33,20,9,7,16,224,21,21,139,193,48, +14,2,2,14,48,2,14,32,15,1,49,15,1,1,15,49,1,15,32,14,2,1,192,9,9,14,1,15,128,15,1,254, +192,1,224,14,9,9,254,0,9,9,14,192,1,20,21,14,192,16,16,119,254,159,1,0,1,15,32,15,1,48,15,1, +1,15,48,1,15,32,15,1,48,15,1,1,15,48,0,0,0,3,0,0,255,192,2,64,1,192,0,96,0,125,0,179, +0,0,19,50,23,22,23,22,7,6,7,6,39,38,35,6,7,6,7,22,23,22,23,22,51,50,49,48,49,54,55,54, +23,22,23,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,34,35, +38,7,38,7,48,35,34,39,38,39,38,39,54,55,54,55,50,23,22,23,22,7,6,7,6,39,38,35,6,7,6,7, +54,55,49,55,54,31,1,22,23,21,20,7,38,39,38,39,38,35,38,7,6,7,38,39,34,53,38,35,53,52,63,1, +19,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39, +38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,54,55,49,184,35,29,12,5,5,6,6,12,12, +12,17,21,37,26,25,1,1,17,17,27,16,18,1,43,35,18,19,34,43,42,35,1,20,19,22,28,13,7,7,3,3, +11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,1,1,2,1,1,1,1,22,20,67,37,37,1,2,60,59,88, +36,32,13,6,6,4,5,11,12,13,23,25,43,33,34,18,42,61,245,19,19,96,12,1,1,8,8,21,17,17,21,21, +19,29,30,30,29,1,2,2,13,96,32,1,20,19,22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7, +7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42,43,35,18,19,34,43,42,35,1,96, +14,6,12,12,13,12,4,5,6,8,1,25,25,37,30,22,23,9,4,2,24,12,12,25,1,2,24,13,15,18,7,3, +11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,1,1,1,6,18,53,53,70,86,56,56,2, +11,4,12,11,13,13,6,6,4,8,1,19,20,33,40,1,50,12,12,72,10,16,144,4,4,4,2,5,13,15,1,12, +20,1,1,20,1,2,122,15,10,72,254,136,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4, +4,4,16,3,1,25,15,10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,2,24,0,0, +0,3,0,0,255,192,1,64,1,192,0,19,0,41,0,46,0,0,19,52,55,49,54,59,1,50,23,22,21,20,7,6, +43,1,34,39,38,53,7,54,55,49,54,55,51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,5,35,21,51, +53,32,9,9,14,192,14,9,9,9,9,14,192,14,9,9,32,1,18,18,27,192,27,18,18,1,1,18,18,27,192,27, +18,18,1,1,0,192,192,1,160,14,9,9,9,9,14,14,9,9,9,9,14,128,27,18,18,1,1,18,18,27,254,224, +27,18,18,1,1,18,18,27,1,32,64,160,160,0,0,0,0,5,0,0,255,192,1,64,1,192,0,19,0,41,0,58, +0,75,0,99,0,0,19,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,7,54,55,49,54,55, +51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,23,54,55,49,54,55,35,6,7,38,39,35,22,23,22,23, +51,53,54,55,49,54,55,35,6,7,38,39,35,22,23,22,23,51,21,54,55,49,54,55,35,6,7,38,39,35,22,23, +22,23,51,21,22,23,54,55,53,51,32,9,9,14,192,14,9,9,9,9,14,192,14,9,9,32,1,18,18,27,192,27, +18,18,1,1,18,18,27,192,27,18,18,1,192,27,18,18,1,48,30,18,18,30,48,1,18,18,27,64,27,18,18,1, +48,30,18,18,30,48,1,18,18,27,64,27,18,18,1,48,30,18,18,30,48,1,18,18,27,16,1,15,15,1,16,1, +160,14,9,9,9,9,14,14,9,9,9,9,14,128,27,18,18,1,1,18,18,27,254,224,27,18,18,1,1,18,18,27, +1,32,160,1,18,18,27,1,21,21,1,27,18,18,1,96,1,18,18,27,1,21,21,1,27,18,18,1,192,1,18,18, +27,1,21,21,1,27,18,18,1,32,15,1,1,15,32,0,0,1,0,32,255,192,2,32,1,192,0,60,0,0,1,22, +29,1,23,53,54,55,22,23,21,6,7,38,39,53,35,21,23,22,29,1,6,7,35,53,38,39,6,7,21,35,38,39, +53,38,63,1,53,35,21,6,7,38,39,53,54,55,22,23,21,55,53,52,63,1,54,51,50,31,1,1,91,5,144,2, +22,22,2,2,22,22,2,144,59,5,1,15,96,1,15,15,1,96,15,1,1,7,58,144,2,22,22,2,2,22,22,2, +144,5,44,5,10,10,5,44,1,79,12,13,77,84,19,22,2,2,22,112,22,2,2,22,8,33,50,5,8,16,15,1, +64,15,1,1,15,64,1,15,16,8,5,50,33,8,22,2,2,22,112,22,2,2,22,19,84,77,13,12,103,10,10,103, +0,3,0,0,255,192,1,128,1,192,0,18,0,40,0,60,0,0,19,54,55,51,22,23,21,51,22,23,6,7,35,38, +39,54,55,51,53,7,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,5,20,23,49,22, +51,50,55,54,61,1,52,39,38,35,34,7,6,29,1,96,2,22,80,22,2,8,22,2,2,22,144,22,2,2,22,8, +96,1,36,37,54,128,54,37,36,1,1,18,18,27,255,0,27,18,18,1,1,0,9,9,14,14,9,9,9,9,14,14, +9,9,1,168,22,2,2,22,24,2,22,22,2,2,22,22,2,24,232,54,37,36,1,1,36,37,54,192,27,18,18,1, +1,18,18,27,192,96,14,9,9,9,9,14,96,14,9,9,9,9,14,96,0,8,0,0,255,192,2,32,1,192,0,17, +0,51,0,69,0,87,0,100,0,124,0,132,0,143,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,51,22,23,22,23,6,7,6,7, +35,38,39,35,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,21,51,22,23,6,7,35,38,39, +54,55,51,53,54,55,22,23,7,53,51,21,6,7,6,7,35,38,39,38,47,1,22,23,49,22,23,6,7,6,7,35, +20,7,6,43,1,34,39,38,61,1,54,55,51,23,38,39,35,21,51,54,55,23,22,23,6,7,35,38,39,54,55,51, +80,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,204,11,39,38,52,61,41,40,2,2,40,41,61,52,38, +39,11,72,14,22,104,20,14,13,1,1,13,14,20,104,22,14,72,140,41,27,27,1,1,27,27,41,41,27,27,1,1, +27,27,41,1,24,96,22,2,2,22,240,22,2,2,22,96,2,22,22,2,136,224,1,13,14,20,128,20,14,13,1,112, +20,14,13,1,1,13,14,20,16,9,9,14,64,14,9,9,1,15,128,16,1,15,16,16,15,1,8,22,2,2,22,176, +22,2,2,22,176,1,48,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,32,49,31,31,1,2,40,41,61, +61,41,40,2,1,31,31,49,15,1,1,13,14,20,20,14,13,1,1,15,128,1,27,27,41,41,27,27,1,1,27,27, +41,41,27,27,1,216,8,2,22,22,2,2,22,22,2,8,22,2,2,22,200,112,112,20,14,13,1,1,13,14,20,144, +1,13,14,20,20,14,13,1,14,9,9,9,9,14,80,15,1,48,15,1,32,1,15,96,2,22,22,2,2,22,22,2, +0,5,0,0,255,192,2,64,1,192,0,10,0,24,0,41,0,53,0,64,0,0,1,6,7,38,39,53,54,55,22,23, +21,7,52,55,49,54,59,1,50,23,22,29,1,33,53,7,54,55,33,22,31,1,22,7,6,7,33,38,39,38,63,1, +3,54,31,1,22,7,6,47,1,38,55,49,37,54,23,22,15,1,6,39,38,63,1,1,56,2,22,22,2,2,22,22, +2,152,9,9,14,192,14,9,9,255,0,77,14,29,1,68,29,14,28,7,9,8,19,254,104,19,8,9,7,28,79,14, +20,104,17,11,14,20,104,17,11,2,22,20,14,11,17,104,20,14,11,17,104,1,24,22,2,2,22,144,22,2,2,22, +144,152,14,9,9,9,9,14,32,32,91,26,1,1,26,55,16,15,14,1,1,14,15,16,55,1,17,17,11,72,14,20, +17,11,72,14,20,6,11,17,20,14,72,11,17,20,14,72,0,2,0,0,255,192,2,0,1,192,0,30,0,65,0,0, +1,22,23,21,6,7,35,21,51,50,23,22,21,20,7,6,35,33,34,39,38,39,54,55,54,59,1,53,54,55,51,5, +51,21,51,53,51,21,51,53,51,21,51,53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48, +49,53,1,96,15,1,1,15,80,192,14,9,9,9,9,14,254,95,13,9,9,1,1,9,9,13,192,2,14,97,254,223, +64,40,64,49,64,40,64,1,1,48,18,5,8,23,254,63,22,8,5,18,48,1,1,192,1,15,64,15,1,32,9,9, +14,14,9,9,9,9,14,14,9,9,112,15,1,224,192,192,192,192,192,192,196,1,32,14,22,22,1,1,22,22,14,32, +1,196,0,0,0,4,0,0,255,192,2,128,1,192,0,27,0,57,0,62,0,66,0,0,19,20,23,49,22,59,1,21, +35,6,7,6,7,21,6,7,35,38,39,38,39,17,54,55,54,55,51,21,23,54,55,49,54,55,33,22,23,22,23,21, +51,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,51,53,23,21,51,53,35,55,35,53,23,192,9,9,14,96, +32,34,23,22,1,33,12,115,20,14,13,1,1,13,14,20,144,48,1,13,14,20,1,0,20,14,13,1,32,15,1,1, +18,18,27,254,192,27,18,18,1,1,15,32,64,224,224,16,96,96,1,96,14,9,9,64,1,22,23,34,112,2,30,1, +13,14,20,1,64,20,14,13,1,96,176,20,14,13,1,1,13,14,20,144,1,15,16,27,18,18,1,1,18,18,27,16, +15,1,144,16,128,128,192,96,96,0,0,0,0,3,0,0,255,224,1,128,1,160,0,19,0,40,0,61,0,0,23,6, +7,49,6,39,38,39,38,55,19,54,55,54,23,22,23,22,7,3,19,22,23,49,22,7,3,6,7,6,39,38,39,38, +55,19,54,55,54,23,49,51,50,23,49,22,21,17,20,7,6,35,34,39,38,53,17,52,55,54,51,49,62,4,12,11, +13,13,6,5,4,128,4,12,11,13,13,6,5,4,128,199,14,7,7,1,64,3,10,11,13,14,7,7,1,64,3,10, +11,13,91,14,9,9,9,9,14,14,9,9,9,9,14,10,13,6,5,4,4,12,11,13,1,128,13,6,5,4,4,12, +11,13,254,128,1,170,3,10,11,13,254,128,14,7,7,1,3,10,11,13,1,128,14,7,7,1,9,9,14,254,128,14, +9,9,9,9,14,1,128,14,9,9,0,0,0,4,0,0,255,192,2,0,1,192,0,31,0,49,0,80,0,93,0,0, +23,38,39,49,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,21,6,7,21,6,7,6,35,34,39,49, +55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,22,23,49,22,23,21,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,168,27, +40,39,30,30,2,2,54,54,82,73,52,52,13,41,26,26,1,30,2,23,17,10,14,14,10,24,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,208,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34, +14,9,9,64,9,9,14,51,33,56,55,59,59,45,82,54,54,2,2,44,45,71,7,30,30,43,25,18,37,95,31,21, +12,12,243,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,1,22,23,34,48,9,9,14,128,14,9,9, +9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,0,5,0,0,255,224,2,64, +1,160,0,69,0,73,0,78,0,87,0,97,0,0,1,22,23,49,22,23,49,22,23,21,48,49,48,49,6,7,6,7, +35,23,22,7,6,47,1,35,7,6,39,38,63,1,35,7,6,39,38,63,1,39,7,6,39,38,55,19,54,23,22,31, +1,55,54,23,22,31,1,51,50,23,38,39,38,39,35,38,39,54,55,51,23,51,39,7,39,7,51,55,39,23,54,55, +38,39,6,7,22,23,37,51,7,38,39,54,55,54,55,49,1,72,69,56,56,33,33,1,1,23,22,34,12,25,9,18, +20,13,39,81,47,14,20,17,11,30,75,52,14,19,17,12,40,43,79,15,19,16,12,240,9,13,13,6,22,41,8,14, +13,6,42,64,15,14,14,54,53,76,16,22,2,2,22,16,4,48,17,31,74,33,48,2,17,238,15,1,1,15,15,1, +1,15,254,105,38,78,16,1,1,16,16,24,1,160,1,33,33,56,56,69,40,34,23,22,1,44,20,13,9,18,68,70, +17,11,14,20,42,70,17,12,14,19,55,17,101,16,12,15,19,1,48,10,1,2,13,50,55,11,1,2,13,97,5,72, +46,45,2,2,22,22,2,208,41,41,41,41,2,39,137,1,15,15,1,1,15,15,1,96,97,16,24,24,16,16,1,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,47,0,0,37,6,7,23,22,21,20,7,6,35,34,47,1,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,38,7,6,31,1,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1, +1,160,1,40,128,9,9,10,13,13,10,126,53,70,88,59,59,2,2,59,59,88,88,59,59,2,176,16,17,14,14,31, +118,22,2,2,22,118,31,14,14,17,16,72,15,15,72,240,70,53,126,10,13,13,10,9,9,128,40,1,2,59,59,88, +88,59,59,2,2,59,59,88,89,14,14,17,16,32,2,22,22,2,31,17,16,15,15,72,16,17,72,0,0,4,0,0, +255,192,2,0,1,192,0,26,0,37,0,48,0,59,0,0,37,6,7,23,22,21,20,7,6,35,34,47,1,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,5,22,23,54,55,53,38,39,6,7,21,51,22,23,54,55,53,38,39,6,7, +21,51,22,23,54,55,53,38,39,6,7,21,1,160,1,40,128,9,9,10,13,13,10,126,53,70,88,59,59,2,2,59, +59,88,88,59,59,2,254,200,2,22,22,2,2,22,22,2,80,2,22,22,2,2,22,22,2,80,2,22,22,2,2,22, +22,2,240,70,53,126,10,13,13,10,9,9,128,40,1,2,59,59,88,88,59,59,2,2,59,59,88,72,22,2,2,22, +64,22,2,2,22,64,22,2,2,22,160,22,2,2,22,160,22,2,2,22,96,22,2,2,22,96,0,0,0,3,0,3, +255,192,2,127,1,192,0,75,0,93,0,128,0,0,1,50,23,49,22,29,1,20,7,6,35,34,39,38,39,53,7,22, +21,6,7,6,7,21,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,39,53,35,34,39,38,39,54, +55,54,59,1,53,38,39,38,39,54,55,54,55,22,23,55,35,34,39,38,39,54,55,54,59,1,7,6,7,49,6,7, +22,23,22,23,54,55,54,55,38,39,38,47,1,55,6,7,6,7,22,23,6,47,1,7,6,39,38,63,1,39,38,39, +38,63,1,39,38,55,54,31,1,55,54,51,50,31,1,2,95,14,9,9,9,9,14,13,9,9,1,35,19,1,35,35, +57,16,14,9,9,9,9,14,16,9,9,14,13,9,9,1,16,13,9,9,1,1,9,9,13,16,56,35,36,1,2,45, +46,67,57,42,33,20,13,9,9,1,1,9,9,13,96,208,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41, +179,60,33,20,19,1,2,41,9,6,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,5,9, +12,4,29,1,192,9,9,14,88,14,9,9,9,9,14,11,37,35,43,59,43,42,13,19,9,9,14,14,9,9,16,14, +9,9,9,9,14,16,9,9,14,14,9,9,19,13,42,43,59,68,45,45,2,1,32,33,9,9,14,14,9,9,128,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,36,18,26,39,39,46,69,51,2,6,54,54,7,4,5,11,79, +13,2,10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,4,0,0,255,192,2,128,1,160,0,54,0,68,0,82, +0,95,0,0,1,22,23,49,22,23,51,22,23,22,23,21,6,7,6,15,1,6,7,53,54,55,52,39,38,39,38,39, +6,7,6,7,6,21,22,23,21,38,47,1,38,39,38,39,53,54,55,54,55,51,54,55,54,55,49,5,6,7,21,20, +23,22,31,1,38,39,54,55,35,33,22,23,20,7,55,54,55,54,61,1,38,39,35,7,52,55,49,54,51,50,23,22, +29,1,35,53,1,64,39,35,34,27,129,24,16,15,1,1,24,25,41,71,37,57,31,1,13,13,22,21,27,27,21,22, +13,13,1,31,59,35,71,41,25,24,1,1,15,16,24,129,26,35,34,40,254,248,7,1,15,15,25,31,6,1,1,31, +103,1,169,30,1,6,32,24,15,15,1,7,103,193,9,9,14,14,9,9,64,1,160,1,27,26,42,1,15,16,24,85, +42,32,32,11,17,47,20,77,25,42,25,32,31,23,23,1,1,23,23,31,32,25,42,25,77,20,47,17,11,32,32,42, +85,24,16,15,1,42,26,27,1,144,1,7,85,25,19,19,7,8,22,24,57,68,68,57,24,22,8,7,19,19,25,85, +7,1,144,14,9,9,9,9,14,192,192,0,0,3,0,0,0,0,2,128,1,128,0,12,0,34,0,47,0,0,37,35, +38,39,38,39,17,54,55,54,55,51,17,39,20,23,49,22,59,1,50,55,54,61,1,52,39,38,43,1,34,7,6,29, +1,19,33,22,23,22,23,17,6,7,6,7,33,17,1,0,192,27,18,18,1,1,18,18,27,192,192,9,9,14,64,14, +9,9,9,9,14,64,14,9,9,224,1,32,27,18,18,1,1,18,18,27,254,224,0,1,18,18,27,1,0,27,18,18, +1,254,128,96,14,9,9,9,9,14,192,14,9,9,9,9,14,192,1,32,1,18,18,27,255,0,27,18,18,1,1,128, +0,9,0,0,255,192,1,64,1,192,0,21,0,34,0,43,0,52,0,61,0,70,0,79,0,88,0,99,0,0,19,54, +55,49,54,55,51,22,23,22,23,17,6,7,6,7,35,38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7, +21,23,54,55,38,39,6,7,22,23,21,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7,22,23,21,6,7,22, +23,54,55,38,39,55,54,55,38,39,6,7,22,23,21,6,7,22,23,54,55,38,39,3,6,7,22,23,51,54,55,38, +39,35,0,1,18,18,27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,64,2,22,144,22,2,2,22,144,22,2, +16,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,80,22,2,2,22,22,2,2,22,22,2,2,22,22,2, +2,22,80,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,112,15,1,1,15,64,15,1,1,15,64,1,128, +27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,168,22,2,2,22,80,22,2,2,22,80,120, +2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2, +22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,1,80,1,15,15,1,1,15,15,1,0, +0,6,0,0,255,193,2,128,1,192,0,23,0,47,0,93,0,101,0,108,0,126,0,0,1,54,31,1,22,21,20,15, +1,6,39,38,63,1,35,38,39,54,63,1,39,38,55,49,1,7,55,22,23,6,15,1,23,22,7,6,47,1,38,53, +52,63,1,54,23,22,7,49,3,51,6,21,22,23,22,59,1,22,23,22,23,22,51,50,63,1,21,6,7,6,7,35, +54,53,52,39,38,39,7,38,39,38,39,38,35,34,15,1,53,54,55,54,55,49,21,54,55,49,54,55,35,21,5,53, +6,7,6,7,51,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,23,17,16,64,8,8,64,16, +17,14,14,23,174,22,2,2,22,174,23,14,14,254,81,22,173,23,1,1,23,173,22,15,15,16,17,64,7,7,64,17, +16,15,15,9,243,6,1,14,15,22,97,6,22,3,3,16,21,21,16,19,1,18,18,27,242,5,15,14,23,96,6,22, +3,3,16,21,21,16,20,1,18,18,27,28,18,17,1,64,1,193,27,18,18,1,64,225,42,27,27,1,1,27,27,42, +41,27,27,1,1,27,27,41,1,185,14,14,64,7,10,10,6,64,15,15,16,17,24,2,21,22,2,1,22,17,17,254, +143,24,1,3,21,23,1,1,23,17,16,15,15,64,6,11,9,7,64,14,14,17,16,1,56,11,12,23,14,15,28,15, +4,3,15,15,19,214,27,18,18,1,11,14,21,15,15,1,1,27,15,4,3,15,15,20,215,27,18,18,1,128,1,18, +18,27,64,192,64,1,18,18,27,32,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,0,7,0,0, +255,192,2,0,1,192,0,50,0,72,0,79,0,86,0,94,0,102,0,120,0,0,1,22,23,22,21,22,21,49,21,20, +7,6,35,34,39,38,61,1,7,6,35,34,47,1,7,6,39,38,39,38,55,54,63,1,54,31,1,55,35,34,39,38, +53,52,55,54,59,1,50,23,49,1,54,55,49,54,55,33,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23, +51,38,39,38,39,21,53,21,54,55,54,55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,215,4,3,1,1,9,9,14,14,9,9,105,10,12,12,10, +92,90,11,12,13,9,9,1,1,10,112,21,21,89,85,19,14,9,9,9,9,14,95,15,9,254,41,1,13,14,20,1, +160,20,14,13,1,1,13,14,20,254,96,20,14,13,1,48,48,1,13,14,20,20,14,13,1,48,1,160,20,14,13,1, +48,48,1,13,14,20,48,160,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,183,5,6,3,4,3,2, +96,14,9,9,9,9,14,19,106,9,8,78,78,9,1,1,10,11,12,13,9,96,16,16,76,84,9,9,14,14,9,9, +9,254,217,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,160,160,20,14,13,1,48,160,48,1,13,14, +20,112,1,13,14,20,48,112,20,14,13,1,48,16,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0, +0,15,0,0,255,192,2,0,1,192,0,12,0,23,0,34,0,45,0,58,0,71,0,84,0,97,0,110,0,132,0,139, +0,146,0,154,0,162,0,180,0,0,1,6,7,38,39,38,39,54,55,22,23,22,23,39,22,23,6,7,35,38,39,54, +55,51,23,22,23,6,7,35,38,39,54,55,51,7,54,55,51,22,23,6,7,35,38,39,55,54,55,22,23,22,23,6, +7,38,39,38,39,23,6,7,38,39,38,39,54,55,22,23,22,23,7,38,39,54,55,54,55,22,23,6,7,6,7,39, +22,23,6,7,6,7,38,39,54,55,54,55,7,38,39,54,55,54,55,22,23,6,7,6,15,1,54,55,49,54,55,33, +22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,23,51,38,39,38,39,21,53,21,54,55,54,55,35,5,6,7, +49,6,7,51,53,39,22,23,49,22,23,53,35,7,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1, +0,1,15,34,23,22,1,1,15,34,23,22,1,152,22,2,2,22,48,22,2,2,22,48,32,22,2,2,22,112,22,2, +2,22,112,104,2,22,48,22,2,2,22,48,22,2,240,1,15,34,23,22,1,1,15,34,23,22,1,208,1,15,34,23, +22,1,1,15,34,23,22,1,80,15,1,1,22,23,34,15,1,1,22,23,34,48,15,1,1,22,23,34,15,1,1,22, +23,34,176,15,1,1,22,23,34,15,1,1,22,23,34,176,1,13,14,20,1,160,20,14,13,1,1,13,14,20,254,96, +20,14,13,1,48,48,1,13,14,20,20,14,13,1,48,1,160,20,14,13,1,48,48,1,13,14,20,48,160,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,1,112,15,1,1,22,23,34,15,1,1,22,23,34,64,2,22,22,2, +2,22,22,2,72,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,168,15,1,1,22,23,34,15,1,1, +22,23,34,64,15,1,1,22,23,34,15,1,1,22,23,34,144,1,15,34,23,22,1,1,15,34,23,22,1,96,1,15, +34,23,22,1,1,15,34,23,22,1,96,1,15,34,23,22,1,1,15,34,23,22,1,80,20,14,13,1,1,13,14,20, +160,20,14,13,1,1,13,14,20,160,160,20,14,13,1,48,160,48,1,13,14,20,112,1,13,14,20,48,112,20,14,13, +1,48,16,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,1,0,0,255,192,2,128,1,192,0,105, +0,0,5,39,38,61,1,39,21,20,7,6,7,38,39,38,39,53,7,21,20,15,1,6,39,38,63,1,53,52,63,1, +49,7,6,39,38,39,38,39,54,55,54,63,1,39,38,63,1,39,38,55,54,31,1,22,15,1,23,53,54,55,53,54, +55,22,29,1,22,23,21,55,39,38,63,1,54,23,22,15,1,23,22,15,1,23,22,23,22,23,6,7,6,7,6,47, +1,49,23,22,29,1,23,22,7,6,39,49,1,174,48,6,25,9,9,14,13,9,9,1,23,6,48,16,18,15,13,42, +6,65,132,30,36,35,27,26,1,1,22,22,34,153,40,12,8,24,39,11,16,18,15,48,9,8,22,49,2,22,1,7, +8,23,1,51,22,8,9,48,15,19,15,11,38,23,8,11,41,153,34,22,22,1,1,26,27,35,36,30,134,68,5,42, +13,15,18,16,56,56,7,9,56,31,63,13,9,9,1,1,9,9,13,63,31,56,9,7,56,15,13,16,18,49,55,9, +6,87,122,29,1,2,25,26,42,37,26,26,6,23,41,14,16,42,51,19,15,12,16,64,13,15,39,50,38,24,7,57, +7,1,1,7,57,7,24,38,50,39,15,13,64,16,12,15,19,51,42,16,14,41,23,6,26,26,37,42,26,25,2,1, +29,122,87,6,9,55,49,18,16,13,15,0,0,6,0,0,255,193,2,128,1,191,0,105,0,187,0,192,0,197,0,202, +0,207,0,0,23,38,63,1,53,54,63,1,53,7,6,39,38,39,38,39,54,55,54,63,1,39,38,63,1,39,38,55, +54,31,1,22,15,1,23,53,54,55,53,54,51,50,29,1,22,23,21,55,39,38,63,1,54,23,22,15,1,23,22,15, +1,23,22,23,6,7,38,39,6,7,38,39,34,7,6,7,6,7,39,21,23,20,21,22,23,6,7,39,21,20,7,6, +7,38,39,38,39,53,7,21,20,15,1,6,39,49,37,22,23,21,51,53,54,55,22,23,21,51,22,23,6,7,35,21, +51,22,23,6,7,35,21,51,22,23,6,7,35,21,6,7,38,39,53,35,21,6,7,38,39,53,35,21,6,7,38,39, +53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,54,55,22,23,21,51,53,54,55,49, +23,53,35,21,51,21,53,35,21,51,39,21,51,53,35,29,1,51,53,35,169,13,6,29,1,5,58,116,27,32,32,23, +24,1,1,19,20,31,160,49,8,3,14,29,6,13,14,7,32,3,2,12,44,2,23,1,6,9,22,1,46,12,2,3, +32,7,14,13,6,29,14,3,8,49,160,34,20,4,3,14,26,26,14,14,26,17,12,12,5,16,10,41,33,1,21,7, +4,44,9,9,14,13,9,9,1,31,2,32,7,14,1,87,15,1,48,1,15,15,1,16,15,1,1,15,16,16,15,1, +1,15,16,16,15,1,1,15,16,1,15,15,1,48,1,15,15,1,48,1,15,15,1,16,15,1,1,15,16,16,15,1, +1,15,16,16,15,1,1,15,16,1,15,15,1,48,1,15,64,48,48,48,48,128,48,48,48,48,14,7,14,61,45,5, +5,60,23,101,26,1,1,22,22,37,31,23,22,4,24,42,7,10,42,58,14,7,6,13,64,6,6,38,38,23,24,8, +42,8,8,42,8,24,23,38,38,6,6,64,13,6,7,14,58,42,10,7,42,24,5,26,4,5,21,2,2,21,21,2, +10,10,15,5,14,35,23,33,3,2,28,12,5,6,43,50,13,9,9,1,1,9,9,13,50,32,40,5,3,64,13,6, +207,2,14,16,16,14,2,2,14,16,2,14,15,1,48,2,14,15,1,48,2,14,15,1,16,15,1,1,15,16,16,15, +1,1,15,16,16,15,1,1,15,16,1,15,14,2,48,1,15,14,2,48,1,15,14,2,16,14,2,2,14,16,16,14, +2,112,48,48,80,48,48,128,48,48,80,48,48,0,0,0,0,1,0,31,0,32,2,32,1,96,0,20,0,0,19,54, +55,49,54,51,50,23,22,31,1,22,7,6,7,33,38,39,38,63,1,144,23,38,38,45,45,38,38,23,108,9,9,8, +19,254,62,19,8,9,9,108,1,13,39,22,22,22,22,39,189,17,15,15,1,1,15,15,17,189,0,0,0,7,0,0, +255,192,2,128,1,192,0,47,0,60,0,73,0,86,0,99,0,115,0,121,0,0,1,22,23,49,22,23,21,51,53,54, +55,22,23,21,51,22,23,22,23,21,6,7,6,7,35,48,55,48,55,54,47,1,51,54,55,53,38,39,35,34,7,39, +53,54,55,54,55,51,7,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23,51,54,55,53,38,39,35,6,7,21, +23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53,38,39,35,7,22,7,6,7,33, +38,39,38,55,19,54,55,22,23,19,3,7,23,55,51,39,1,176,20,14,13,1,40,2,22,22,2,24,20,14,13,1, +1,13,14,20,122,1,1,17,19,73,3,15,1,1,15,32,5,4,71,1,13,14,20,96,64,15,1,1,15,32,15,1, +1,15,32,16,1,15,32,15,1,1,15,32,15,1,160,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15, +1,1,15,32,85,10,9,11,19,254,132,20,10,9,10,190,9,20,19,10,190,220,73,24,48,62,61,1,192,1,13,14, +20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1,1,34,34,122,1,15,32,15,1,3,119,92,20,14, +13,1,64,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1, +1,15,32,48,1,15,32,15,1,1,15,32,15,1,107,17,18,17,1,1,17,18,17,1,58,16,1,1,16,254,198,1, +14,122,41,64,99,0,0,0,0,2,0,0,255,192,2,128,1,192,0,17,0,44,0,0,1,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,1,52,55,19,54,55,22,31,1,55,54,51,50,31,1,22,21,6,7,6,7,33, +38,39,38,39,49,1,224,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,254,32,9,216,11,20,20,11,126, +48,6,13,12,7,132,9,1,17,17,26,253,245,24,16,15,1,1,112,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,254,136,16,14,1,89,16,1,1,16,201,79,11,11,216,15,17,26,17,17,1,1,16,16,23,0,2,0,0, +255,192,2,64,1,189,0,65,0,70,0,0,37,22,7,49,6,15,1,6,39,38,47,1,5,21,51,63,1,7,51,39, +55,23,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,17,54,55,22,23,21,63,1,54,55,22, +31,1,55,39,38,55,54,63,1,54,23,22,31,1,5,51,39,35,7,2,58,8,16,16,33,15,13,12,11,3,26,254, +174,42,53,74,25,66,27,62,67,137,14,9,9,9,9,14,254,0,14,9,9,9,9,14,16,2,22,22,2,132,14,8, +22,22,8,7,108,25,3,6,7,13,15,33,28,28,9,42,254,147,134,11,112,11,232,33,28,27,10,4,3,6,7,13, +94,88,159,152,20,76,78,16,190,9,9,14,14,9,9,9,9,14,14,9,9,1,8,22,2,2,22,39,35,39,20,1, +1,20,19,28,92,13,11,11,4,4,8,16,16,32,155,232,32,32,0,0,0,10,0,0,255,224,2,128,1,160,0,17, +0,45,0,51,0,78,0,84,0,102,0,120,0,150,0,156,0,162,0,0,19,6,7,49,6,7,38,39,38,39,54,55, +54,55,22,23,22,31,1,6,7,20,23,21,20,7,6,43,1,34,39,38,61,1,38,39,38,53,54,55,54,55,51,22, +23,49,7,6,7,22,23,53,5,53,54,55,38,39,54,55,51,22,23,22,23,20,7,6,7,21,20,7,6,43,1,34, +39,38,53,55,54,55,38,39,21,39,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,23,20,7,49,6,7,21,20,7,6,43,1,34,39,38,61,1,38,39, +38,53,54,55,54,55,51,22,23,22,23,7,53,6,7,22,23,55,21,54,55,38,39,184,1,15,16,24,24,16,15,1, +1,15,16,24,24,16,15,1,24,46,2,32,9,9,14,64,14,9,9,29,17,18,1,32,31,48,32,36,28,144,15,1, +1,15,1,128,31,1,2,46,27,37,32,48,31,32,1,18,17,29,9,9,14,64,14,9,9,128,15,1,1,15,8,1, +15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,254,200,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18, +1,192,18,17,29,9,9,14,64,14,9,9,29,17,18,1,32,31,48,32,48,31,32,1,192,15,1,1,15,128,15,1, +1,15,1,104,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,108,42,66,52,39,21,14,9,9,9,9,14, +27,14,26,27,34,48,31,32,1,1,19,50,17,25,25,17,84,170,21,39,52,66,42,19,1,1,32,31,48,34,27,26, +14,27,14,9,9,9,9,14,86,17,25,25,17,84,242,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,8, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,208,34,27,26,14,43,14,9,9,9,9,14,43,14,26,27, +34,48,31,32,1,1,32,31,48,42,84,17,25,25,17,84,84,17,25,25,17,0,0,0,0,5,0,0,255,224,2,128, +1,160,0,17,0,35,0,55,0,73,0,165,0,0,1,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +5,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,5,50,23,49,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,51,33,39,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,5,20,7,49,6,43,1,34, +39,38,61,1,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59,1,50,23,22,31,1,54,59,1,50, +23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,61,1,7,6,39,38,63,1,38,47,1,21,20,7, +6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,47,1,23,1,104,12,11,17,17,11,12,12,11,17,17, +11,12,255,0,12,11,17,17,11,12,12,11,17,17,11,12,1,248,14,9,9,9,9,14,253,192,14,9,9,9,9,14, +2,64,152,12,11,17,17,11,12,12,11,17,17,11,12,255,0,9,9,14,48,14,9,9,27,12,20,19,9,38,12,20, +21,24,20,25,20,34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,27,9,9,14, +48,14,9,9,27,12,20,19,9,36,2,2,27,9,9,14,49,13,9,9,1,26,1,1,1,1,36,9,19,20,12,28, +1,1,120,17,11,12,12,11,17,17,11,12,12,11,17,96,17,11,12,12,11,17,17,11,12,12,11,17,248,9,9,14, +14,9,9,9,9,14,14,9,9,248,17,11,12,12,11,17,17,11,12,12,11,17,184,14,9,9,9,9,14,38,49,19, +9,12,20,71,21,13,12,13,63,21,13,12,12,13,21,63,13,12,13,21,71,20,12,9,19,49,38,14,9,9,9,9, +14,38,49,19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12,9,19,49,38,0, +0,4,0,0,255,192,2,63,1,192,0,18,0,109,0,128,0,147,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,49,23,50,31,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47, +1,7,23,22,31,1,22,7,6,7,6,39,38,47,2,38,63,1,6,35,34,21,7,6,15,1,6,39,6,47,1,19, +22,7,6,7,6,39,38,47,1,35,23,22,7,6,7,6,39,38,47,1,6,35,34,39,38,61,1,54,55,54,55,23, +37,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,3,23,7,6,15,1,6,35,34,39,38,53,52, +63,2,22,23,49,32,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,86,19,18,134,20,34,11,31,35,34, +27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71, +23,9,17,1,1,1,11,24,10,1,10,21,6,5,119,58,3,7,7,13,13,11,11,3,30,16,21,1,7,7,14,13, +11,10,3,24,9,15,14,9,9,1,18,18,27,54,1,42,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +59,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,80,7,56,30,14,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14, +10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,11,24,4,20,1,1,2,50,254,251,13,11,11,3,3,7,7, +13,135,123,13,11,10,3,1,7,7,14,144,11,9,10,14,128,26,19,18,1,1,80,20,14,13,1,1,13,14,20,20, +14,13,1,1,13,14,20,254,216,45,36,9,7,62,9,9,10,13,13,10,59,62,4,4,0,4,0,8,255,192,2,47, +1,192,0,54,0,73,0,92,0,137,0,0,1,54,55,49,54,23,22,23,22,15,1,6,7,17,20,7,6,35,34,39, +38,61,1,35,21,20,7,6,35,34,39,38,53,17,38,47,1,38,55,54,55,54,23,22,31,1,22,23,22,51,50,55, +54,63,1,7,54,55,49,54,55,22,23,22,23,6,7,6,35,34,39,38,39,49,5,54,55,49,54,55,22,23,22,23, +6,7,6,7,38,39,38,39,49,23,22,31,1,51,50,23,22,21,20,7,6,43,1,34,47,1,21,20,7,6,35,34, +39,38,61,1,35,21,20,7,6,35,34,39,38,61,3,54,55,54,55,23,1,240,4,11,12,13,13,6,7,3,9,19, +59,9,9,14,14,9,9,16,9,9,14,14,9,9,59,19,10,2,6,7,13,14,10,11,4,9,8,24,24,32,32,24, +24,8,8,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,192,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,73,43,24,38,30,14,9,9,9,9,14,48,17,11,12,9,9,14,14,9,9,16,9,9,14,14, +9,9,1,18,18,27,33,1,168,13,6,7,3,4,11,10,14,35,67,32,254,206,14,9,9,9,9,14,128,128,14,9, +9,9,9,14,1,50,32,67,35,14,10,11,4,3,7,6,13,35,31,18,19,19,18,31,35,23,20,13,13,1,1,13, +13,20,21,13,14,14,13,21,1,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,1,36,59,9,9,14, +14,9,9,15,20,227,14,9,9,9,9,14,128,128,14,9,9,9,9,14,191,2,96,26,19,18,1,1,0,5,0,0, +255,192,2,127,1,192,0,23,0,41,0,60,0,78,0,170,0,0,1,22,23,49,22,7,6,7,6,39,37,5,6,39, +38,39,38,55,54,55,37,54,23,13,1,54,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,39,7,54,55,49, +54,51,50,23,22,21,20,7,6,35,34,39,38,39,49,33,20,7,49,6,35,34,39,38,39,54,55,54,51,50,23,22, +21,5,39,21,20,7,6,43,1,34,39,38,39,53,7,6,39,38,63,1,54,55,54,59,1,50,23,55,54,55,54,59, +1,50,23,22,31,1,54,59,1,50,23,22,31,1,22,7,6,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6, +39,38,63,1,38,47,1,21,20,7,6,43,1,34,39,38,39,53,7,6,7,6,7,23,22,7,6,39,49,2,112,11, +3,4,7,6,12,12,12,254,238,254,241,13,12,12,7,6,3,4,11,1,33,15,16,1,32,254,167,1,11,12,16,18, +11,11,11,11,18,16,12,11,1,176,1,11,12,16,18,11,11,11,11,18,16,12,11,1,1,176,11,11,18,16,12,11, +1,1,11,12,16,18,11,11,254,204,28,9,9,14,48,13,9,9,1,26,12,20,19,9,38,12,20,21,24,20,25,20, +34,12,20,21,24,20,24,21,20,12,34,20,25,20,24,21,20,12,38,9,19,20,12,28,9,9,14,48,13,9,9,1, +26,12,20,19,9,36,2,2,28,9,9,14,48,13,9,9,1,26,1,1,1,1,36,9,19,20,12,1,28,7,12,12, +13,11,3,4,7,150,150,7,4,3,11,13,12,12,7,160,8,8,160,36,17,11,12,12,11,17,17,11,12,12,11,17, +96,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,17,11,12,12,11,17,195,49,38,14,9,9,9, +9,14,38,49,19,9,12,20,71,21,13,12,13,63,21,13,13,13,13,21,63,13,12,13,21,71,20,12,9,19,49,38, +14,9,9,9,9,14,38,49,19,9,12,20,68,2,4,49,54,14,9,9,9,9,14,54,49,2,1,2,1,68,20,12, +9,19,0,0,0,4,0,0,255,192,2,128,1,192,0,17,0,68,0,73,0,109,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,15,1,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22, +7,6,7,6,39,38,47,1,21,33,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,53,23,53,35, +21,51,55,38,53,49,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,15, +1,6,35,34,47,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,29,7,12,13,11,12,3,3, +7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,1,88,14,9,9,9,9,14,253,192,14, +9,9,9,9,14,88,80,16,16,193,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9,80,10, +13,13,10,80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,209,48,11,3,3,7,7,12,13,11, +97,22,13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,191,9,9,14,14,9,9,9,9,14,14,9,9,191,191, +96,96,121,10,13,13,10,9,9,26,243,14,9,9,9,9,14,243,26,9,9,10,13,13,10,80,9,9,80,0,0,0, +0,4,0,0,255,192,2,128,1,192,0,17,0,68,0,73,0,109,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,15,1,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7,6,7,6, +39,38,47,1,21,33,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,53,23,53,35,21,51,1,22, +21,49,20,7,6,35,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,54,51,50, +31,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,24,29,7,12,13,11,12,3,3,7,58,13,22, +21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,1,88,14,9,9,9,9,14,253,192,14,9,9,9,9, +14,88,80,16,16,1,143,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9,80,10,13,13,10, +80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,209,48,11,3,3,7,7,12,13,11,97,22,13, +12,12,13,22,97,11,13,12,7,7,3,3,11,48,191,9,9,14,14,9,9,9,9,14,14,9,9,191,191,96,96,1, +71,10,13,13,10,9,9,26,243,14,9,9,9,9,14,243,26,9,9,10,13,13,10,80,9,9,80,0,0,3,0,0, +255,192,1,191,1,192,0,17,0,84,0,102,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +1,7,6,7,6,39,38,39,38,55,35,38,39,53,52,39,38,35,34,7,6,29,1,20,21,23,22,23,22,7,6,7, +6,47,1,48,35,38,35,38,39,38,39,38,55,54,55,48,49,55,54,55,54,59,1,50,23,22,31,1,22,23,22,7, +22,7,49,39,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,144,1,22,23,34,34,23,22,1,1,22, +23,34,34,23,22,1,1,37,63,14,19,19,16,13,4,3,7,1,60,40,9,9,14,14,9,9,102,18,6,6,9,10, +18,18,18,160,1,1,1,7,6,7,2,5,9,1,1,68,20,31,32,36,76,35,30,31,21,51,3,2,5,2,1,11, +161,19,12,13,13,12,19,19,12,13,13,12,19,1,112,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254, +209,78,16,3,2,12,12,15,16,15,10,45,37,14,9,9,9,9,14,48,1,1,51,10,18,18,19,18,6,6,9,80, +1,5,7,7,10,19,18,1,2,101,30,17,17,16,16,28,71,5,5,10,11,16,13,95,13,12,19,19,12,13,13,12, +19,19,12,13,0,3,0,3,255,192,2,127,1,192,0,17,0,70,0,110,0,0,1,54,55,49,54,55,22,23,22,21, +20,7,6,7,38,39,38,39,19,34,39,49,38,39,53,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,39,53,35,21,20,7,6,35,49,3,55,54, +23,22,15,1,23,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,39,38,63,1,39,38,55,54,31,1,55, +54,51,50,31,1,1,175,1,14,13,20,21,13,14,14,13,21,20,13,14,1,8,13,9,9,1,28,7,12,13,11,12, +3,3,7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,30,9,9,14,13,9,9,1,16,9, +9,14,219,76,11,7,6,6,38,55,25,50,5,1,10,9,8,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5, +6,7,11,76,29,5,9,12,4,29,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,9,9, +14,223,48,11,3,3,7,7,12,13,11,97,22,13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9, +9,9,14,128,128,14,9,9,1,164,23,3,8,9,9,69,38,41,8,79,11,5,4,7,54,54,7,4,5,11,79,13, +2,10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,0,3,0,0,255,192,1,128,1,192,0,17,0,67,0,92, +0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,20,7,49,6,35,34,39,38,61,1,35, +21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,22,31,1,22,7,6,7, +6,39,38,47,1,21,55,6,7,38,39,53,54,55,54,55,22,23,22,23,21,6,7,38,39,53,38,39,6,7,21,240, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,8,9,9,14,14,9,9,16,9,9,14,14,9,9,29,7, +12,13,11,12,3,3,7,58,13,22,21,26,36,45,29,74,8,1,1,11,10,13,13,9,47,88,2,22,22,2,1,15, +16,24,24,16,15,1,2,22,22,2,1,7,7,1,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +254,80,14,9,9,9,9,14,128,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12,1,34, +89,10,13,13,9,8,1,1,11,57,245,96,22,2,2,22,8,24,16,15,1,1,15,16,24,112,22,2,2,22,112,7, +1,1,7,8,0,2,0,32,255,192,2,128,1,192,0,17,0,93,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,19,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,53,54,55,54, +55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,51,21,51,53,35,21,51,50,23,22,21,20,7,6,43, +1,17,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,49,144,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,8,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,143,1,13,14,20,224,20,14,13,1,1, +13,14,20,224,20,14,13,1,64,192,192,16,14,9,9,9,9,14,136,9,9,14,14,9,9,16,9,9,14,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,80,20,14,13,1,1,13,14,20,224,20,14,13,1,1,13,14,20,48,32,192,64,9,9,14,14,9,9,254,224, +14,9,9,9,9,14,128,128,14,9,9,0,0,4,0,0,255,192,2,64,1,192,0,17,0,66,0,84,0,100,0,0, +19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7, +6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38, +61,1,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1, +54,39,38,7,49,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12, +13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,1,168, +2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1, +144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7, +7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,5,0,0, +255,192,2,64,1,192,0,17,0,66,0,84,0,93,0,104,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,208,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21, +26,30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41, +61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,144,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12, +12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41,61,61,41,40,2,2, +40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,95,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22, +23,39,35,6,7,22,23,51,54,55,38,39,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9, +14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25,11,1,3,1,29,9,9, +14,14,9,9,16,1,168,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1, +1,15,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11, +3,3,7,7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41, +40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,109,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,38,39,6,7,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26, +30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61, +61,41,40,2,160,1,15,15,1,48,15,1,1,15,48,1,15,15,1,48,15,1,1,15,48,1,144,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,5,0,0, +255,192,2,64,1,192,0,17,0,66,0,84,0,93,0,128,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23, +22,31,1,6,7,38,49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,22,23,54,55,53,54,55,51,22,23,20,15,1,6,29, +1,22,23,54,55,53,55,54,55,52,39,38,43,1,34,7,6,29,1,208,1,13,14,20,20,14,13,1,1,13,14,20, +20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,45,25, +11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2, +2,22,22,2,2,22,64,1,15,15,1,1,9,40,13,1,7,32,9,1,15,15,1,24,23,1,13,13,20,40,18,12, +12,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3, +3,7,7,12,13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40, +2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,136,15,1,1,15,6,9,1,1,13, +8,4,17,5,9,15,15,1,1,15,5,12,15,26,20,13,13,12,12,18,6,0,0,0,0,4,0,0,255,192,2,64, +1,192,0,17,0,66,0,84,0,109,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21, +20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,6,7,38, +49,38,47,1,21,20,7,6,35,34,39,38,61,1,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26, +30,26,21,22,13,45,25,11,1,3,1,29,9,9,14,14,9,9,16,136,2,40,41,61,61,41,40,2,2,40,41,61, +61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12, +13,11,97,22,13,12,12,13,22,74,27,35,1,3,2,48,223,14,9,9,9,9,14,128,16,61,41,40,2,2,40,41, +61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,0,0,0,3,0,3,255,192,2,127,1,192,0,17,0,81,0,121,0,0,1,20,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,21,3,55,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7, +6,7,6,39,38,47,1,23,22,7,6,43,1,21,20,7,6,35,34,39,38,39,53,35,21,20,7,6,35,34,39,38, +39,53,35,34,39,38,55,49,3,55,54,23,22,15,1,23,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38, +39,38,63,1,39,38,55,54,31,1,55,54,51,50,31,1,2,15,14,13,21,20,13,14,1,1,14,13,20,21,13,14, +152,38,34,7,12,13,11,12,3,3,7,53,16,25,25,30,12,30,25,25,16,53,7,3,3,11,12,13,12,7,34,37, +3,4,5,8,19,9,9,14,13,9,9,1,16,9,9,14,13,9,9,1,17,8,5,4,2,155,76,11,7,6,6,38, +55,25,50,5,1,10,9,8,60,58,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,5,9,12,4, +29,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,197,115,57,11,3,3,7,7,12,13,11,90, +25,14,15,15,14,25,90,11,13,12,7,7,3,3,11,57,115,8,6,7,96,14,9,9,9,9,14,96,96,14,9,9, +9,9,14,96,7,6,8,1,15,23,3,8,9,9,69,38,41,8,79,11,5,4,7,54,54,7,4,5,11,79,13,2, +10,10,7,45,69,9,9,8,3,23,74,11,11,74,0,0,0,3,0,0,255,224,2,63,1,160,0,45,0,63,0,117, +0,0,19,22,23,49,22,23,22,63,1,54,23,22,23,22,7,6,15,1,6,15,1,38,39,38,35,34,7,6,7,38, +39,55,38,39,38,61,1,54,55,54,51,50,23,22,29,1,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,19,54,55,51,54,23,22,23,22,23,22,7,6,7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39, +6,7,6,39,38,39,38,55,54,55,54,55,54,23,49,22,23,54,55,54,23,22,23,49,191,1,23,23,38,61,62,106, +13,11,11,3,3,7,7,13,105,16,16,17,21,19,17,20,20,17,26,33,11,12,21,29,17,17,1,9,9,13,14,9, +9,64,1,18,19,27,27,18,18,1,1,18,18,27,27,19,18,1,129,42,35,1,20,19,22,28,13,7,7,3,3,11, +12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7,7,13,28,22,19,21,35,42, +43,35,18,19,34,43,1,96,40,32,31,12,19,13,24,3,7,7,13,13,11,11,3,24,4,2,97,5,13,12,12,19, +2,1,3,146,27,35,36,41,32,14,9,9,9,9,14,32,31,27,18,18,1,1,18,18,27,28,18,17,1,1,17,18, +28,254,223,2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15, +10,3,7,7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,0,2,0,32,255,193,1,192, +1,192,0,60,0,78,0,0,1,50,23,49,22,29,1,20,7,6,7,21,23,51,22,31,1,22,7,6,7,6,39,38, +47,1,35,23,22,7,6,7,6,39,38,47,1,6,7,21,6,7,34,39,38,39,53,54,55,54,55,54,55,54,61,1, +52,55,54,51,49,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,0,14,9,9,20,19,33,57, +87,24,14,44,7,1,2,11,11,13,12,9,38,97,92,7,3,2,12,11,13,12,8,160,5,1,2,30,13,9,9,1, +1,27,27,46,28,15,16,10,9,14,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,9,9,14, +10,41,35,35,22,1,79,1,19,58,11,12,13,9,7,1,2,11,52,144,11,13,12,8,7,3,2,12,248,14,15,73, +30,2,9,9,14,73,50,39,40,19,11,24,23,30,10,14,9,9,80,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,0,0,3,0,0,255,193,2,124,1,192,0,59,0,77,0,124,0,0,1,20,7,49,6,7,21,23,51,22, +31,1,22,7,6,7,6,39,38,47,1,35,23,22,7,6,7,6,39,38,47,1,6,7,21,6,7,34,39,38,39,53, +54,55,54,55,54,55,54,61,1,54,55,54,51,50,23,22,21,23,7,6,7,49,6,35,34,39,38,39,54,55,54,55, +22,23,22,23,5,7,38,47,1,55,39,38,39,35,20,39,48,49,38,63,1,39,38,55,54,31,1,55,54,51,50,31, +1,55,54,23,22,15,1,23,22,7,6,15,1,23,22,7,6,47,1,1,0,20,19,33,57,70,25,14,44,7,1,2, +11,11,13,12,9,39,80,92,7,3,2,12,11,13,12,8,160,5,1,2,30,13,9,9,1,1,27,27,46,28,15,16, +1,9,9,13,14,9,9,1,160,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,112,39,3,3,37,2, +18,23,32,18,1,2,9,66,40,5,6,7,11,76,29,4,11,11,4,29,76,11,7,6,6,38,65,8,1,3,11,78, +5,1,10,9,8,59,1,150,41,35,35,22,1,79,1,19,58,11,12,13,9,7,1,2,11,52,144,11,13,12,8,7, +3,2,12,248,14,15,73,30,2,9,9,14,73,50,39,40,19,11,24,23,30,10,14,9,9,9,9,14,10,37,21,13, +14,14,13,21,20,14,13,1,1,13,14,20,207,36,4,4,49,17,3,21,1,1,1,10,7,45,69,9,9,8,3,23, +74,10,10,74,23,3,8,9,9,69,45,7,10,10,2,13,79,11,5,4,7,54,0,0,0,3,0,0,255,192,1,63, +1,192,0,17,0,43,0,75,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,51,50,23, +22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,53,17,7,54,55,49,54,55,17,20,7,6, +35,34,39,38,61,1,35,34,39,38,63,1,7,6,7,6,39,38,39,38,63,1,112,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,56,7,26,21,22,13,58,7,3,3,11,12,13,12,7,29,9,9,14,14,9,9,110,15,25, +25,29,9,9,14,14,9,9,18,8,5,4,2,38,34,7,12,13,11,12,3,3,7,53,1,144,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,80,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,1, +96,54,25,14,14,1,254,160,14,9,9,9,9,14,96,7,6,8,115,57,11,3,3,7,7,12,13,11,90,0,0,0, +0,6,0,0,255,192,2,64,1,192,0,18,0,69,0,87,0,121,0,132,0,143,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,49,3,38,39,49,38,63,1,54,55,54,59,1,22,31,1,22,7,6,7,6,39, +38,47,1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,49,37,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,55,49,54,55,22,23,22,23,21,6,7,6,7,34, +47,1,7,6,7,6,39,38,39,38,63,1,54,55,54,31,1,53,3,54,55,51,22,23,6,7,35,38,39,23,22,7, +6,47,1,38,55,54,31,1,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,12,3,3,7,58,13, +22,21,26,36,45,29,74,8,1,1,11,10,13,13,9,47,9,9,14,14,9,9,16,9,9,14,14,9,9,29,7,12, +13,11,1,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,16,1,15,16,24,24,16,15,1,1,18,19, +28,27,20,54,28,7,12,12,12,12,4,4,5,48,7,17,16,12,41,176,1,15,56,15,1,1,15,56,15,1,47,13, +6,7,14,48,13,6,7,14,48,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,245,7,12,13, +11,97,22,13,12,1,34,89,10,13,13,9,8,1,1,11,57,245,14,9,9,9,9,14,128,128,14,9,9,9,9,14, +223,48,11,3,3,7,75,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,104,24,16,15,1,1,15,16,24, +102,28,19,18,1,19,55,56,12,4,4,5,7,12,12,12,96,15,3,2,11,42,59,1,40,15,1,1,15,15,1,1, +15,74,7,14,13,6,24,7,14,13,6,24,0,5,0,0,255,192,2,0,1,191,0,11,0,26,0,41,0,58,0,71, +0,0,1,22,23,21,6,7,35,38,39,54,63,1,7,52,55,51,22,21,6,7,6,7,38,39,38,39,49,23,22,23, +7,53,35,34,39,38,53,52,55,54,55,33,31,1,22,7,6,7,6,39,38,47,1,21,35,55,22,23,49,7,21,20, +7,6,43,1,34,39,38,61,1,51,1,111,15,2,1,15,152,22,2,1,22,152,159,2,156,2,1,22,23,34,34,23, +22,1,105,22,20,163,152,17,11,12,12,11,17,1,17,117,76,9,4,4,15,15,15,15,9,54,169,171,27,17,46,9, +9,14,128,14,9,9,192,1,191,1,15,30,15,1,2,22,22,3,13,110,7,9,9,7,35,22,22,1,1,22,22,35, +112,1,7,162,90,11,11,18,16,12,11,1,68,129,15,15,15,9,9,4,4,15,90,46,171,17,29,157,32,14,9,9, +9,9,14,32,0,5,0,0,255,192,1,192,1,191,0,12,0,26,0,66,0,79,0,102,0,0,19,54,63,1,22,23, +21,6,7,35,38,39,49,23,22,21,6,7,6,7,38,39,38,39,52,55,51,19,39,21,20,21,48,49,39,54,55,51, +22,23,55,38,55,54,31,1,22,15,1,23,22,23,22,15,1,22,31,1,22,7,6,7,6,39,38,39,49,39,54,55, +52,39,38,35,34,7,6,21,22,23,7,34,39,49,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,19,6,43, +1,128,1,22,152,15,2,1,15,152,22,2,174,2,1,22,23,34,34,23,22,1,2,156,72,54,174,25,28,50,24,22, +95,12,6,8,14,28,12,7,56,3,11,3,4,7,36,3,2,76,9,4,4,15,15,15,15,9,110,22,2,7,7,10, +10,7,7,2,22,104,14,9,9,54,9,15,15,15,15,4,4,9,76,14,22,181,5,6,128,1,153,22,3,13,1,15, +30,15,1,2,22,56,9,7,35,22,22,1,1,22,22,35,7,9,254,147,90,110,2,2,249,11,1,1,8,164,9,13, +12,6,16,9,13,96,1,7,12,13,12,63,4,5,129,15,15,15,9,9,4,4,15,141,1,23,10,7,7,7,7,10, +23,1,193,9,9,14,110,90,15,4,4,9,9,15,15,15,129,25,15,254,253,2,0,0,0,8,0,0,255,192,2,0, +1,192,0,11,0,27,0,39,0,54,0,72,0,94,0,119,0,145,0,0,19,50,23,21,6,7,35,38,39,54,63,1, +23,6,7,49,6,7,38,39,38,39,52,55,51,22,21,49,7,54,55,23,34,43,1,34,39,38,61,1,23,39,50,55, +54,59,1,22,23,22,23,21,20,7,49,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,22,23, +49,22,23,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,51,1,6,39,38,63,1,39,38,39,52,55,54,51, +23,39,38,55,54,31,1,22,21,20,15,1,63,1,54,23,22,15,1,51,50,23,22,21,6,7,35,23,22,7,6,47, +1,38,53,52,55,49,182,16,2,1,15,111,16,1,1,14,111,10,1,18,18,27,27,18,18,1,3,123,2,160,1,20, +144,2,3,128,14,9,9,190,137,2,2,3,4,64,27,18,18,1,2,98,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,96,27,18,18,1,9,9,14,128,14,9,9,1,18,18,27,64,254,248,18,16,13,15,16,113,21,2,7, +7,10,112,16,15,13,16,18,64,8,8,64,144,64,18,16,13,15,16,112,10,7,7,2,22,112,16,15,13,16,18,64, +8,8,1,192,16,14,15,1,1,16,14,3,12,96,27,18,18,1,1,18,18,27,9,9,9,9,160,29,18,111,9,9, +14,32,43,106,1,1,1,18,19,26,32,7,5,203,27,19,18,1,1,18,19,27,27,18,18,1,1,18,18,27,96,1, +18,18,27,32,14,9,9,9,9,14,32,27,18,18,1,254,198,13,15,18,16,14,1,1,23,10,7,7,1,14,16,18, +15,13,56,7,10,12,7,56,92,56,13,15,18,16,13,7,7,10,23,1,15,16,18,15,13,56,7,12,10,7,0,0, +0,6,0,0,255,192,1,255,1,192,0,17,0,68,0,80,0,91,0,103,0,114,0,0,1,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54, +55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,3,54,31, +1,22,7,6,47,1,38,55,49,33,54,23,22,15,1,6,39,38,63,1,1,55,54,23,22,15,1,6,39,38,55,49, +37,38,55,54,31,1,22,7,6,47,1,1,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9, +14,14,9,9,29,7,12,13,11,12,3,3,7,58,13,22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7, +29,9,9,14,14,9,9,16,241,17,17,79,15,15,16,17,80,14,14,1,208,17,16,15,15,80,16,17,14,14,80,254, +48,80,17,16,15,15,79,17,17,14,14,1,128,14,14,17,16,80,15,15,16,17,80,1,144,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22,13,12, +12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,128,1,89,14,14,80,17,16,15,15,79,17, +17,14,14,17,17,79,15,15,16,17,80,254,48,80,14,14,17,16,80,15,15,16,17,47,16,17,14,14,80,17,16,15, +15,80,0,0,0,3,0,15,255,192,2,32,1,192,0,20,0,38,0,91,0,0,1,50,23,17,35,53,7,6,7,6, +39,38,39,38,63,1,54,55,54,59,1,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,55,21,22, +23,21,55,53,54,55,51,22,23,21,6,15,1,21,51,22,23,21,6,7,35,23,22,7,35,38,39,53,35,34,39,38, +61,1,52,55,54,51,53,54,55,53,38,39,54,55,51,22,23,49,1,9,39,32,192,54,9,15,15,15,15,4,4,9, +76,19,30,31,37,50,55,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,144,15,1,16,1,15,16,15,1, +1,10,53,48,15,1,1,15,44,23,2,17,60,15,1,16,14,9,9,9,9,14,1,15,15,1,1,15,32,15,1,1, +0,20,254,212,174,90,15,4,4,9,9,15,15,15,129,32,17,18,112,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,64,116,9,19,109,5,56,15,1,1,15,85,11,4,17,27,1,15,16,15,1,92,18,2,1,15,96,9,9, +14,144,14,9,9,32,19,9,100,1,15,15,1,1,15,0,0,3,0,0,255,192,2,0,1,192,0,30,0,48,0,84, +0,0,1,22,23,17,20,7,6,35,34,39,38,53,17,39,7,17,20,7,6,35,34,39,38,53,17,54,63,1,54,31, +1,5,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,19,38,39,53,7,6,39,38,63,1,54,55,54, +59,1,50,23,22,31,1,22,7,6,47,1,21,6,7,38,39,53,35,21,6,7,49,1,240,15,1,9,9,14,14,9, +9,192,192,9,9,14,14,9,9,1,15,224,15,17,224,254,232,12,11,17,17,11,12,12,11,17,17,11,12,8,22,2, +27,12,20,19,9,38,12,20,21,24,20,24,21,20,12,38,9,19,20,12,27,2,22,22,2,16,2,22,1,60,10,18, +254,192,14,9,9,9,9,14,1,45,110,110,254,211,14,9,9,9,9,14,1,64,18,10,128,8,8,128,36,17,11,12, +12,11,17,17,11,12,12,11,17,254,168,2,22,174,49,19,9,12,20,71,21,13,13,13,13,21,71,20,12,9,19,49, +174,22,2,2,22,88,88,22,2,0,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,150,0,0, +19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38,39,38,63,1, +54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7,6,7,6, +39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23,49,5,38, +53,49,52,63,1,54,51,50,23,22,21,20,15,1,51,54,55,54,55,38,39,38,39,35,34,39,38,53,52,55,54,59, +1,22,23,22,23,6,7,6,7,35,23,22,21,20,7,6,35,34,47,1,160,1,13,14,20,20,14,13,1,1,13,14, +20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4, +5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9,17,1,1,1,11,12, +40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,1,4,9,9,80,10,13,13,10,9,9,26,19,41,27,27,1, +1,27,27,41,128,14,9,10,10,9,14,128,68,45,45,2,2,45,45,68,19,26,9,9,10,13,13,10,80,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14, +19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77, +27,33,64,1,1,4,139,45,36,9,7,62,9,9,10,13,13,10,59,62,4,4,31,10,13,13,10,80,9,9,10,13, +13,10,25,1,27,27,41,41,27,27,1,9,9,14,14,9,9,2,45,45,68,68,45,45,2,25,10,13,13,10,9,9, +80,0,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,132,0,0,19,54,55,49,54,55,22,23, +22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38,39,38,63,1,54,63,1,54,51,50,23,22, +31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7,6,7,6,39,38,47,2,38,63,1,6, +35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23,49,37,22,21,49,20,15,1,6,35,34, +39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50,31,1,160,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27, +14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9, +17,1,1,1,11,12,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,2,18,9,9,80,10,13,13,10,9,9, +26,147,14,9,9,9,9,14,147,26,9,9,10,13,13,10,80,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4, +5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62, +9,9,10,13,13,10,59,62,4,4,111,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13, +13,10,9,9,80,0,0,0,0,8,0,0,255,192,2,128,1,192,0,18,0,77,0,96,0,132,0,143,0,154,0,165, +0,176,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,49,7,6,15,1,6,7,6,39,38, +39,38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22, +7,6,7,6,39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22, +23,49,37,22,21,49,20,15,1,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52, +55,54,51,50,31,1,39,22,23,21,6,7,38,39,53,54,55,23,6,7,38,39,53,54,55,22,23,21,7,22,23,21, +6,7,38,39,53,54,55,23,6,7,38,39,53,54,55,22,23,21,160,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4,5,7, +12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71,23,9,17,1,1,1,11,12,40,14, +4,7,61,10,13,13,10,9,9,60,25,3,4,2,18,9,9,80,10,13,13,10,9,9,26,147,14,9,9,9,9,14, +147,26,9,9,10,13,13,10,80,239,22,2,2,22,22,2,2,22,24,2,22,22,2,2,22,22,2,24,22,2,2,22, +22,2,2,22,24,2,22,22,2,2,22,22,2,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,157, +11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16, +23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62,9,9,10,13, +13,10,59,62,4,4,111,10,13,13,10,80,9,9,10,13,13,10,25,9,9,14,14,9,9,25,10,13,13,10,9,9, +80,233,2,22,48,22,2,2,22,48,22,2,168,22,2,2,22,16,22,2,2,22,16,152,2,22,16,22,2,2,22,16, +22,2,168,22,2,2,22,48,22,2,2,22,48,0,0,0,0,4,0,3,255,192,1,255,1,192,0,17,0,76,0,95, +0,121,0,0,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,15,1,6,7,6,39,38,39, +38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22,31,1,22,7, +6,7,6,39,38,47,2,38,63,1,6,35,34,21,15,1,23,7,6,15,1,6,35,34,39,38,53,52,63,2,22,23, +49,39,22,15,1,6,15,1,6,7,6,47,1,38,39,38,63,1,54,55,54,31,1,55,54,23,49,1,96,1,13,14, +20,20,14,13,1,1,13,14,20,20,14,13,1,47,24,10,1,6,11,12,13,12,5,5,4,2,20,47,11,31,35,34, +27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3,7,6,13,13,12,11,4,21,71, +23,9,17,1,1,1,11,12,40,14,4,7,61,10,13,13,10,9,9,60,25,3,4,70,13,6,44,1,2,64,7,13, +12,12,55,12,3,4,7,63,8,12,13,12,54,32,9,12,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,157,11,24,4,12,5,5,4,6,11,12,13,4,47,22,5,14,19,18,31,37,10,7,12,12,12,12,4,4,5, +14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13,88,77,27,33,64,1,1,4,139,45,36,9,7,62,9, +9,10,13,13,10,59,62,4,4,70,9,12,77,4,4,111,11,3,4,7,32,7,12,12,12,111,12,3,4,6,32,56, +11,6,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,60,0,76,0,0,1,21,23,6,7,6,21,20,23,22, +23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,54,55,54,55,22,23,22,23, +49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39, +38,7,49,1,64,77,35,21,21,17,17,29,3,11,1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,18,18, +27,28,18,17,1,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11, +11,72,10,10,11,11,1,98,84,44,25,37,38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66, +9,5,105,84,29,31,31,3,3,31,31,29,254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60, +28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,0,4,0,0,255,192,2,128,1,192,0,42,0,60,0,69, +0,80,0,0,1,21,23,6,7,6,21,20,23,22,23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6, +39,53,52,63,1,53,54,55,54,55,22,23,22,23,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,1,64,77,35,21,21,17,17,29,3,11, +1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,18,18,27,28,18,17,1,32,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,98,84,44,25,37, +38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66,9,5,105,84,29,31,31,3,3,31,31,29, +254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1, +15,80,15,1,1,15,0,0,0,3,0,0,255,192,2,128,1,192,0,42,0,60,0,85,0,0,1,21,23,6,7,6, +21,20,23,22,23,6,35,34,35,39,7,34,35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,54,55,54,55, +22,23,22,23,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7, +6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,1,64,77,35,21,21,17,17,29,3,11,1,2,110,110,2, +2,13,1,6,58,172,17,3,8,184,1,18,18,27,28,18,17,1,32,2,40,41,61,61,41,40,2,2,40,41,61,61, +41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,98,84,44, +25,37,38,46,41,35,34,24,10,32,32,1,14,41,9,4,43,71,49,3,18,66,9,5,105,84,29,31,31,3,3,31, +31,29,254,238,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,0,0,3,0,0,255,192,2,128,1,192,0,45,0,76,0,89, +0,0,19,54,55,49,54,55,22,23,22,23,21,23,6,29,1,6,7,39,21,23,22,29,1,6,7,34,35,39,7,34, +35,38,39,53,52,63,1,53,7,6,39,53,52,63,1,53,5,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,192,1,18,18, +27,28,18,17,1,102,6,28,4,64,58,6,1,14,1,2,110,110,2,2,13,1,6,58,172,17,3,8,184,1,80,34, +23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,98,29,31,31, +3,3,31,31,29,84,58,17,19,25,16,35,19,71,43,4,9,41,14,1,32,32,1,14,41,9,4,43,71,49,3,18, +66,9,5,105,84,98,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9, +9,14,48,48,14,9,9,0,0,10,0,0,255,224,1,253,1,160,0,14,0,25,0,36,0,47,0,62,0,77,0,93, +0,108,0,124,0,155,0,0,1,21,6,7,38,39,38,39,53,54,55,22,23,22,23,39,22,23,6,7,35,38,39,54, +55,51,23,22,23,6,7,35,38,39,54,55,51,7,54,55,51,22,23,6,7,35,38,39,55,54,55,22,23,22,23,21, +6,7,38,39,38,39,53,23,21,6,7,38,39,38,39,53,54,55,22,23,22,23,21,6,7,49,6,7,38,39,53,54, +55,54,55,22,23,21,39,22,23,21,6,7,6,7,38,39,53,54,55,54,55,7,6,7,49,6,7,38,39,53,54,55, +54,55,22,23,21,7,38,55,49,54,51,33,50,23,22,7,6,7,6,7,21,20,7,6,35,33,34,39,38,39,53,38, +39,38,39,49,1,0,1,15,34,23,22,1,1,15,34,23,22,1,152,22,2,2,22,48,22,2,2,22,48,32,22,2, +2,22,112,22,2,2,22,112,104,2,22,48,22,2,2,22,48,22,2,240,1,15,34,23,22,1,1,15,34,23,22,1, +208,1,15,34,23,22,1,1,15,34,23,22,1,1,22,23,34,15,1,1,22,23,34,15,1,128,15,1,1,22,23,34, +15,1,1,22,23,34,96,1,22,23,34,15,1,1,22,23,34,15,1,253,1,7,7,12,1,200,11,7,8,1,6,25, +25,37,9,9,14,254,255,13,9,9,1,36,25,25,6,1,80,16,15,1,1,22,23,34,16,15,1,1,22,23,34,48, +2,22,22,2,2,22,22,2,72,2,22,22,2,2,22,22,2,96,22,2,2,22,22,2,2,22,184,15,1,1,22,23, +34,16,15,1,1,22,23,34,16,64,16,15,1,1,22,23,34,16,15,1,1,22,23,34,96,34,23,22,1,1,15,16, +34,23,22,1,1,15,16,32,1,15,16,34,23,22,1,1,15,16,34,23,22,1,32,34,23,22,1,1,15,16,34,23, +22,1,1,15,16,140,12,8,8,8,8,12,38,26,27,7,2,14,9,9,9,9,14,2,7,27,26,38,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,100,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +7,6,23,22,59,1,7,6,23,22,63,1,54,39,38,43,1,55,54,39,38,7,49,96,14,9,9,64,9,9,14,192, +14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64, +64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,177,96,7,3,3,8,36,30,4,6,7,8,96,7,3, +3,8,36,31,3,6,7,8,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4, +16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,82,72,6,8,8,54,8,7,5,4,72,6,8,8,54,8,8,4,4,0,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,92,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39, +7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64, +14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64,224,2,40,41,61,61,41,40, +2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,192,9,9,14,96,96,14, +9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9, +9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10, +72,11,11,10,10,0,0,0,0,6,0,0,255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,85,0,96,0,0, +19,50,23,49,22,29,1,35,53,52,55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21, +20,7,6,7,6,7,20,23,6,7,21,35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6, +7,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35, +36,1,14,9,9,9,9,14,1,64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22, +22,2,2,22,17,2,14,15,1,1,15,14,2,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160, +9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0, +0,5,0,0,255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,87,0,0,19,50,23,49,22,29,1,35,53,52, +55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7, +21,35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,23,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,35,6,7,22,23,51,54,55,38,39,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14,64,14, +9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1,64,224,2,40,41,61,61,41,40,2, +2,40,41,61,61,41,40,2,80,128,15,1,1,15,128,15,1,1,15,1,192,9,9,14,96,96,14,9,9,9,9,14, +96,96,14,9,9,160,9,9,14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9, +208,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,2,14,15,1,1,15,14,2,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,101,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +38,39,6,7,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,96,14,9,9,64,9,9,14, +192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1, +64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,15,15,1,48,15,1,1,15,48,1,15,15, +1,48,15,1,1,15,48,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9,14,3,4,16, +46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,65,14,2,2,14,48,2,14,15,1,48,15,1,1,15,48,1,15,14,2,48,0,0,0,5,0,0, +255,192,2,64,1,192,0,12,0,25,0,58,0,76,0,101,0,0,19,50,23,49,22,29,1,35,53,52,55,54,59,1, +50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,7,6,7,20,23,6,7,21,35,53,38, +39,38,39,53,34,39,38,53,52,55,54,51,33,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55, +54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,96,14,9,9,64,9,9,14, +192,14,9,9,64,9,9,14,64,14,9,9,1,56,35,35,1,3,16,19,64,56,35,36,1,14,9,9,9,9,14,1, +64,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11,37,37,11,11,10,10,36,36,10, +10,11,11,37,37,11,11,10,10,36,36,1,192,9,9,14,96,96,14,9,9,9,9,14,96,96,14,9,9,160,9,9, +14,3,4,16,46,46,61,17,16,8,4,99,99,13,42,43,59,32,9,9,14,14,9,9,208,61,41,40,2,2,40,41, +61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,0,0,0,4,0,0,255,192,2,128,1,192,0,31,0,53,0,75,0,97,0,0,1,22,23,49,22,15,1,23, +20,7,6,47,1,7,6,39,38,53,55,39,38,55,54,63,2,54,51,50,31,2,7,50,23,49,22,29,1,20,7,6, +43,1,34,39,38,61,1,52,55,54,59,1,7,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54, +59,1,5,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,1,150,7,2,3,5,38,9, +5,6,6,47,47,7,5,5,9,38,5,3,2,7,52,24,4,6,7,3,24,52,22,14,9,9,9,9,14,128,14,9, +9,9,9,14,128,224,14,9,9,9,9,14,128,14,9,9,9,9,14,128,1,32,9,9,14,128,14,9,9,9,9,14, +128,14,9,9,1,130,1,7,6,5,37,52,7,4,4,3,24,25,3,4,4,7,53,37,5,6,7,1,8,48,6,6, +48,8,194,9,9,14,192,14,9,9,9,9,14,192,14,9,9,64,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +96,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,5,0,0,255,224,2,128,1,160,0,23,0,28,0,33, +0,38,0,60,0,0,19,50,23,49,22,29,1,51,7,21,20,7,6,35,34,39,38,53,17,52,55,54,51,49,1,35, +55,51,7,55,51,7,35,55,33,51,7,35,55,5,53,52,55,54,51,50,23,22,21,17,20,7,6,35,34,39,38,61, +1,35,55,32,14,9,9,85,85,9,9,14,14,9,9,9,9,14,1,21,74,96,74,96,150,74,96,74,96,255,0,74, +96,74,96,1,117,9,9,14,14,9,9,9,9,14,14,9,9,85,85,1,160,9,9,14,32,170,182,14,9,9,9,9, +14,1,128,14,9,9,255,0,192,192,192,192,192,192,192,22,54,14,9,9,9,9,14,254,128,14,9,9,9,9,14,160, +170,0,0,0,0,6,0,0,255,192,2,128,1,192,0,20,0,31,0,42,0,53,0,91,0,96,0,0,1,33,50,23, +22,21,17,20,7,6,35,33,34,39,38,53,17,52,55,54,51,23,21,22,23,54,55,53,38,39,6,7,23,38,39,6, +7,21,22,23,54,55,53,3,21,22,23,54,55,53,38,39,6,7,5,33,21,35,21,51,21,6,7,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,38,39,53,51,53,35,34,39,38,53,52,55,54,51,23,35,21,51,53,1,96,1, +0,14,9,9,9,9,14,255,0,14,9,9,9,9,14,104,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22, +2,48,2,22,22,2,2,22,22,2,254,88,1,0,40,40,41,27,27,1,9,9,14,32,14,9,9,1,27,27,41,72, +40,14,9,9,9,9,14,168,80,80,1,192,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,224,64,22,2, +2,22,64,22,2,2,22,160,22,2,2,22,64,22,2,2,22,64,1,64,64,22,2,2,22,64,22,2,2,22,32,64, +64,96,1,27,27,41,64,14,9,9,9,9,14,64,41,27,27,1,96,64,9,9,14,14,9,9,64,64,64,0,0,0, +0,3,0,32,255,192,2,128,1,160,0,62,0,80,0,96,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50, +23,22,31,1,38,35,34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34, +7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,51,49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,213,75,9,9,14,14,9,9,75,20,17,16,7, +43,17,17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15,15,1,3,118,7, +16,16,21,1,171,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72, +10,10,11,11,1,160,64,14,9,9,9,9,14,64,12,11,20,120,3,20,20,35,43,14,9,9,9,9,14,64,14,9, +9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,254,176,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,0,0,4,0,32,255,192,2,128, +1,160,0,62,0,80,0,89,0,100,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50,23,22,31,1,38,35, +34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34,7,6,29,1,35,38, +39,38,39,52,55,19,54,55,54,51,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55, +38,39,6,7,22,23,39,21,22,23,54,55,53,38,39,6,7,213,75,9,9,14,14,9,9,75,20,17,16,7,43,17, +17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15,15,1,3,118,7,16,16, +21,139,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1, +1,15,14,2,1,160,64,14,9,9,9,9,14,64,12,11,20,120,3,20,20,35,43,14,9,9,9,9,14,64,14,9, +9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,254,176,61,41,40,2,2,40,41,61,61, +41,40,2,2,40,41,61,96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,3,0,32, +255,192,2,128,1,160,0,62,0,80,0,105,0,0,19,51,21,20,23,22,51,50,55,54,61,1,51,50,23,22,31,1, +38,35,34,7,6,7,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,6,21,20,23,35,34,7,6,29,1, +35,38,39,38,39,52,55,19,54,55,54,51,49,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,51, +55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,213,75,9,9,14,14,9,9, +75,20,17,16,7,43,17,17,45,37,38,24,9,9,14,14,9,9,9,9,14,3,4,7,1,1,14,9,9,201,24,15, +15,1,3,118,7,16,16,21,139,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,167,36,10,10,11,11,37, +37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,1,160,64,14,9,9,9,9,14,64,12,11,20,120, +3,20,20,35,43,14,9,9,9,9,14,64,14,9,9,1,24,25,8,8,9,9,14,64,1,15,15,24,9,9,1,76, +20,11,12,254,176,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,0,0,0,0,4,0,32,255,192,2,128,1,160,0,49,0,69,0,100, +0,113,0,0,1,20,23,49,22,51,50,55,54,61,1,51,50,23,22,31,1,6,7,6,7,21,6,7,21,35,53,52, +39,38,35,34,7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,59,1,31,1,52,39,49,38,35,34,7,6,29, +1,20,23,22,51,50,55,54,61,1,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1, +52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,32,9,9,14,14,9,9,75,20, +17,16,7,31,44,29,28,1,30,2,32,9,9,14,14,9,9,201,24,15,15,1,3,118,7,16,16,21,74,1,64,9, +9,14,14,9,9,9,9,14,14,9,9,176,34,23,22,1,14,9,9,9,9,14,160,14,9,9,9,9,14,1,22,23, +34,14,9,9,64,9,9,14,1,96,14,9,9,9,9,14,64,12,11,20,86,4,31,31,45,25,18,37,128,64,14,9, +9,9,9,14,64,1,15,15,24,9,9,1,76,20,11,12,64,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64, +32,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9,48,34,23,22,1,48,9,9,14,48,48,14, +9,9,0,0,0,2,0,0,0,1,2,128,1,91,0,30,0,50,0,0,19,54,55,49,54,31,1,53,54,55,54,31, +1,53,54,55,54,31,1,53,54,55,54,31,1,22,7,6,7,33,53,1,22,23,49,22,21,20,7,6,35,33,34,39, +38,53,52,55,54,55,33,64,1,10,11,7,99,1,10,11,7,99,1,10,11,7,99,1,10,11,7,130,10,9,8,20, +253,252,2,32,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,1,75,12,4,3,9,148,138,12,4,3,9, +148,138,12,4,3,9,148,138,12,4,3,9,195,17,16,15,1,234,254,246,1,9,9,13,14,9,9,9,9,14,13,9, +9,1,0,0,0,3,0,0,0,0,2,128,1,128,0,35,0,40,0,76,0,0,19,17,35,38,39,54,55,51,53,35, +38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,59,1,33,17,33,17,5, +35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,17,51,22, +23,6,7,80,56,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,56,32,1,160,254,96,1,248,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,56,56,22,2,2,22,1,128,254,128,2,22,22,2,40,2,22,22,2,32,2,22,22,2,32,2,22,22,2,40,2, +22,22,2,254,128,1,128,48,40,2,22,22,2,32,2,22,22,2,32,2,22,22,2,40,2,22,22,2,1,128,2,22, +22,2,0,0,0,3,0,0,255,192,2,0,1,192,0,13,0,47,0,72,0,0,19,38,55,49,54,55,51,22,23,22, +15,1,35,39,23,22,23,49,22,23,49,22,23,6,7,6,7,33,38,39,38,39,54,55,54,55,54,55,48,49,54,55, +51,48,51,22,23,49,23,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,55,145, +5,4,4,10,196,10,4,4,5,47,128,47,187,31,41,42,32,32,2,1,27,27,41,254,192,41,27,27,1,2,32,32, +41,42,30,7,6,128,1,5,6,4,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16,48,47,17,16,15,15, +46,46,1,167,9,8,7,1,1,7,8,9,71,71,111,18,34,35,55,56,82,41,27,27,1,1,27,27,41,82,56,55, +35,34,18,4,4,4,4,152,16,17,14,14,47,47,14,14,17,16,48,47,17,16,15,15,46,46,15,15,16,17,47,48, +0,6,0,0,255,192,2,128,1,192,0,53,0,66,0,79,0,94,0,112,0,127,0,0,1,23,22,23,22,29,1,38, +39,38,39,6,7,54,53,38,39,38,39,6,7,6,7,22,23,22,23,50,55,6,7,35,49,6,7,6,7,21,51,33, +38,39,38,39,17,52,55,54,63,2,54,31,1,5,6,7,21,22,23,51,54,55,53,38,39,35,21,6,7,21,22,23, +51,54,55,53,38,39,35,55,22,23,21,51,22,23,6,7,35,38,39,53,54,55,5,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,7,39,38,7,6,31,1,22,63,1,54,39,38,15,1,1,221,125,17,10,11,24,38,37, +45,59,44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1,27,18,18,1,64,254,240,20,14,13,1, +11,10,17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,224,15, +1,16,15,1,1,15,32,15,1,1,15,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,29,11, +11,10,10,40,11,11,72,10,10,11,11,61,1,94,27,5,13,13,17,94,35,20,20,1,1,33,21,29,37,25,25,1, +1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14,20,1,35,17,13,13,5,27,93,10,10,93,94, +1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64,15,1,192,1,15,16,1,15,15,1,1,15,32, +15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,17,28,10,10,11,11,40,10,10,72,11,11,10, +10,60,0,0,0,7,0,0,255,192,2,128,1,192,0,53,0,66,0,79,0,94,0,112,0,121,0,132,0,0,1,23, +22,23,22,29,1,38,39,38,39,6,7,54,53,38,39,38,39,6,7,6,7,22,23,22,23,50,55,6,7,35,49,6, +7,6,7,21,51,33,38,39,38,39,17,52,55,54,63,2,54,31,1,5,6,7,21,22,23,51,54,55,53,38,39,35, +21,6,7,21,22,23,51,54,55,53,38,39,35,55,22,23,21,51,22,23,6,7,35,38,39,53,54,55,23,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22,23,54,55,53,38,39, +6,7,1,221,125,17,10,11,24,38,37,45,59,44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1, +27,18,18,1,64,254,240,20,14,13,1,11,10,17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15, +1,1,15,32,15,1,1,15,32,224,15,1,16,15,1,1,15,32,15,1,1,15,32,2,40,41,61,61,41,40,2,2, +40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17,2,14,15,1,1,15,14,2,1,94,27,5,13,13,17, +94,35,20,20,1,1,33,21,29,37,25,25,1,1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14, +20,1,35,17,13,13,5,27,93,10,10,93,94,1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64, +15,1,192,1,15,16,1,15,15,1,1,15,32,15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61, +96,2,22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,6,0,0,255,192,2,128,1,192,0,53, +0,66,0,79,0,94,0,112,0,137,0,0,1,23,22,23,22,29,1,38,39,38,39,6,7,54,53,38,39,38,39,6, +7,6,7,22,23,22,23,50,55,6,7,35,49,6,7,6,7,21,51,33,38,39,38,39,17,52,55,54,63,2,54,31, +1,5,6,7,21,22,23,51,54,55,53,38,39,35,21,6,7,21,22,23,51,54,55,53,38,39,35,55,22,23,21,51, +22,23,6,7,35,38,39,53,54,55,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,51,55,54,39, +38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,1,221,125,17,10,11,24,38,37,45,59, +44,15,1,25,25,37,37,25,25,1,1,25,25,37,24,19,36,6,1,27,18,18,1,64,254,240,20,14,13,1,11,10, +17,125,139,17,19,139,254,131,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,224,15,1,16, +15,1,1,15,32,15,1,1,15,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,167,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,1,94,27,5,13,13,17,94,35,20,20,1,1, +33,21,29,37,25,25,1,1,25,25,37,38,25,24,1,10,41,58,1,18,18,27,96,1,13,14,20,1,35,17,13,13, +5,27,93,10,10,93,94,1,15,64,15,1,1,15,64,15,1,128,1,15,64,15,1,1,15,64,15,1,192,1,15,16, +1,15,15,1,1,15,32,15,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,37,11,11,10,10,36, +36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,0,0,0,6,0,0,255,192,2,64,1,192,0,48, +0,66,0,79,0,92,0,105,0,118,0,0,1,51,22,23,21,6,7,35,21,23,51,22,23,22,23,21,6,7,6,7, +35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,53,54,55,54,55,51,55,53,52,55,54,51,49,21,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,7,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51, +54,55,53,38,39,35,6,7,21,5,6,7,21,22,23,51,54,55,53,38,39,35,33,6,7,21,22,23,51,54,55,53, +38,39,35,1,32,112,15,1,1,15,80,90,102,27,18,18,1,1,18,18,27,176,1,13,14,20,20,14,13,1,176,27, +18,18,1,1,18,18,27,102,90,9,9,14,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,208,15,1,1, +15,32,15,1,1,15,32,1,112,1,15,32,15,1,1,15,32,15,1,254,144,15,1,1,15,32,15,1,1,15,32,1, +128,15,1,1,15,32,15,1,1,15,32,1,192,1,15,48,15,1,16,64,1,18,18,27,224,27,18,18,1,112,20,14, +13,1,1,13,14,20,112,1,18,18,27,224,27,18,18,1,64,64,14,9,9,192,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,32,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15,1,1,15,64,48,1,15,64, +15,1,1,15,64,15,1,1,15,64,15,1,1,15,64,15,1,0,0,0,0,7,0,0,255,192,2,128,1,192,0,14, +0,55,0,68,0,81,0,99,0,130,0,143,0,0,1,51,22,23,6,7,35,38,39,53,54,55,22,23,21,39,54,31, +2,22,23,22,29,1,38,39,38,39,6,7,6,7,21,6,7,35,49,6,7,6,7,21,51,33,38,39,38,39,17,52, +55,54,63,2,3,22,23,51,54,55,53,38,39,35,6,7,29,1,22,23,51,54,55,53,38,39,35,6,7,21,55,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,22,23,49,22,23,21,50,23,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,21,34,7,49,6,29,1,51,53,52,39,38,35,1,80,16,15, +1,1,15,32,15,1,1,15,15,1,34,17,19,139,125,17,10,11,1,32,31,48,48,31,32,1,30,2,64,27,18,18, +1,64,254,240,20,14,13,1,11,10,17,125,139,222,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32, +15,1,240,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,208,34,23,22,1,14,9,9,9,9,14,160,14, +9,9,9,9,14,1,22,23,34,14,9,9,64,9,9,14,1,32,1,15,15,1,1,15,32,15,1,1,15,16,155,10, +10,93,27,5,13,13,17,98,47,32,32,1,1,32,32,47,26,18,37,1,18,18,27,96,1,13,14,20,1,35,17,13, +13,5,27,93,254,245,15,1,1,15,64,15,1,1,15,64,128,15,1,1,15,64,15,1,1,15,64,136,1,25,25,37, +37,25,25,1,1,25,25,37,37,25,25,1,72,1,22,23,34,48,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +48,34,23,22,1,48,9,9,14,48,48,14,9,9,0,0,0,4,0,0,255,192,1,128,1,192,0,23,0,35,0,46, +0,50,0,0,19,54,55,49,54,55,33,22,23,22,23,17,35,34,7,6,29,1,35,38,39,38,39,17,55,38,15,1, +6,23,22,63,1,54,39,49,23,54,39,38,15,1,6,23,22,63,1,19,7,53,51,0,1,18,18,27,1,0,27,18, +18,1,128,14,9,9,160,27,18,18,1,171,11,11,96,10,10,11,11,96,10,10,96,10,10,11,11,160,10,10,11,11, +160,117,128,128,1,128,27,18,18,1,1,18,18,27,254,224,9,9,14,128,1,18,18,27,1,128,11,10,10,96,11,11, +10,10,96,11,11,54,11,11,10,10,160,11,11,10,10,160,254,235,128,128,0,4,0,16,255,192,1,240,1,192,0,8, +0,17,0,45,0,59,0,0,55,54,55,22,23,6,7,38,39,51,6,7,38,39,54,55,22,23,3,50,31,1,22,23, +22,7,6,7,6,7,6,35,34,39,38,39,38,39,38,55,54,63,1,54,51,49,7,39,21,22,23,22,23,54,55,54, +55,53,7,35,199,2,14,15,1,1,15,14,2,113,1,15,15,1,1,15,15,1,56,9,7,205,17,2,4,16,17,49, +49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,33,64,1,27,27,41,42,27,27,1,64,65,176,15,1, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,1,16,4,87,7,20,50,74,75,73,73,45,4,4,45,73,73,75, +74,50,20,7,87,4,208,64,128,41,27,27,1,1,27,27,41,128,64,0,0,4,0,16,255,192,1,240,1,192,0,8, +0,36,0,61,0,75,0,0,37,6,7,38,39,54,55,22,23,39,50,31,1,22,23,22,7,6,7,6,7,6,35,34, +39,38,39,38,39,38,55,54,63,1,54,51,49,3,7,23,53,51,54,55,54,55,53,38,39,35,39,38,39,35,21,6, +7,6,7,34,39,49,39,21,22,23,22,51,50,55,54,61,1,35,6,7,1,32,1,15,15,2,2,15,15,1,32,9, +7,205,17,2,4,16,17,49,49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,95,18,129,48,34,23,22, +1,1,15,64,7,9,20,45,1,17,18,28,7,7,18,1,9,9,13,14,9,9,48,14,2,240,15,1,1,15,15,1, +1,15,208,4,87,7,20,50,74,75,73,73,45,4,4,45,73,73,75,74,50,20,7,87,4,254,226,34,64,64,1,22, +23,34,32,15,1,14,17,1,64,27,18,18,1,2,110,48,14,9,9,9,9,14,64,1,15,0,0,0,0,2,0,16, +255,192,1,240,1,192,0,27,0,51,0,0,1,50,31,1,22,23,22,7,6,7,6,7,6,35,34,39,38,39,38,39, +38,55,54,63,1,54,51,49,19,55,54,39,38,39,38,7,6,15,1,39,38,39,38,7,6,7,6,31,1,22,55,49, +1,0,9,7,205,17,2,4,16,17,49,49,96,9,8,8,9,95,50,49,16,16,4,1,18,204,8,8,10,98,21,1, +2,24,21,25,26,20,10,10,19,27,26,21,24,1,1,21,96,12,10,1,192,4,87,7,20,50,74,75,73,73,45,4, +4,45,73,73,75,74,50,20,7,87,4,254,149,99,23,30,30,21,18,2,3,20,9,9,20,3,2,18,21,30,30,23, +99,10,10,0,0,4,0,0,255,224,1,192,1,160,0,21,0,45,0,67,0,78,0,0,19,54,55,49,54,55,33,22, +23,22,23,17,6,7,6,7,33,38,39,38,39,17,23,21,22,23,54,55,53,23,22,55,54,61,1,38,39,6,7,21, +39,38,7,6,7,49,23,22,23,54,55,53,51,54,55,38,39,35,53,51,54,55,38,39,35,6,7,21,55,38,39,6, +7,21,22,23,54,55,53,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,64,1,15,15, +1,66,6,12,11,1,15,14,2,65,7,11,11,1,160,1,15,15,1,48,15,1,1,15,48,48,15,1,1,15,64,15, +1,160,1,15,15,1,1,15,15,1,1,96,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +80,160,15,1,1,15,102,110,10,3,3,12,160,15,1,1,15,102,110,10,3,3,12,160,15,1,1,15,80,1,15,15, +1,32,1,15,15,1,1,15,160,160,15,1,1,15,160,15,1,1,15,160,0,3,0,0,255,224,1,192,1,160,0,21, +0,39,0,72,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,39,38,7,6,15,1,6,23,22,23,22,55,54,63,1,23,22, +51,54,55,54,55,53,38,39,38,39,6,7,6,7,21,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,1,64,176,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,32,41,12,16,17,7,48,5,4,4, +12,12,12,12,7,28,54,20,27,28,19,18,1,1,15,16,24,24,16,15,1,1,160,1,18,18,27,254,192,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,64,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,211,42,11,2, +3,15,96,12,12,12,7,5,4,4,12,56,55,19,1,18,19,28,102,24,16,15,1,1,15,16,24,59,0,4,0,0, +255,224,1,192,1,160,0,17,0,26,0,48,0,115,0,0,55,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39, +38,53,23,6,7,38,39,54,55,22,23,19,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55, +33,7,6,7,49,6,39,38,7,6,23,22,7,6,7,6,7,22,23,22,23,22,7,6,23,22,55,54,23,22,23,22, +23,54,55,54,55,54,23,22,55,54,39,38,55,54,55,54,55,38,39,38,39,38,55,54,39,38,7,6,39,38,39,38, +39,6,7,49,160,9,9,14,14,9,9,9,9,14,14,9,9,120,2,22,22,2,2,22,22,2,104,27,18,18,1,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,184,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22, +22,8,8,15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19,17,17,17,14,14,15,8,7,23,22,2,2,22, +23,7,8,15,14,14,17,17,17,19,19,1,2,22,22,2,224,14,9,9,9,9,14,14,9,9,9,9,14,64,22,2, +2,22,22,2,2,22,1,0,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,86,22,8,8, +15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19,17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8, +15,14,14,17,17,17,19,19,1,2,22,22,2,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22,0,0,0, +0,2,0,0,255,192,1,128,1,192,0,97,0,106,0,0,19,51,22,23,22,23,6,7,6,7,35,53,51,54,55,38, +39,35,7,51,22,23,22,23,6,7,6,7,35,53,51,54,55,38,39,35,7,6,7,38,47,1,35,34,39,38,39,54, +55,54,59,1,39,35,38,39,38,39,54,55,54,55,21,22,23,51,39,35,6,7,35,38,39,38,39,54,55,54,55,51, +39,52,49,48,53,54,55,54,51,50,23,22,23,20,49,48,29,1,7,38,39,6,7,22,23,54,55,223,65,41,27,27, +1,1,27,27,41,40,40,15,1,1,15,68,4,40,41,27,27,1,1,27,27,41,16,16,15,1,1,15,44,3,2,16, +13,2,1,40,16,12,11,1,1,11,12,16,36,1,19,40,27,28,1,1,22,23,34,2,14,18,5,41,16,35,16,24, +16,15,1,1,15,16,24,106,2,1,9,9,13,13,9,8,1,144,1,15,14,2,2,14,15,1,1,144,1,27,27,41, +41,27,27,1,80,1,15,15,1,144,1,27,27,41,41,27,27,1,80,1,15,15,1,144,15,1,1,15,32,12,11,17, +17,11,12,32,1,27,27,41,36,26,26,7,95,15,1,144,30,2,1,15,16,24,24,16,15,1,16,1,1,13,8,9, +9,8,13,1,1,16,48,15,1,1,15,15,1,1,15,0,0,4,0,0,255,192,2,128,1,192,0,17,0,67,0,85, +0,166,0,0,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,50,31,1,55,54,23,22,15,1, +23,22,21,20,15,1,23,22,7,6,47,1,7,6,35,34,47,1,7,6,39,38,63,1,39,38,53,52,63,1,39,38, +55,54,31,1,55,54,51,49,21,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,51,50,23,22,21, +20,7,6,35,33,34,39,38,53,52,55,54,51,33,53,52,39,38,35,34,7,6,29,1,22,23,6,7,6,7,38,39, +38,39,54,55,53,54,55,54,55,22,23,53,54,55,54,55,22,23,22,23,21,22,23,6,7,6,7,38,39,38,39,54, +55,53,52,39,38,39,6,7,6,21,17,192,9,9,14,14,9,9,9,9,14,14,9,9,32,10,5,24,57,10,7,7, +3,22,56,9,9,56,22,3,7,7,10,57,24,5,10,11,4,24,57,10,7,7,3,22,56,9,9,56,22,3,7,7, +10,57,24,4,11,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,88,104,14,9,9,9,9,14,253,192, +14,9,9,9,9,14,1,168,9,9,14,14,9,9,23,1,1,13,14,20,20,14,13,1,1,23,1,22,23,34,17,15, +1,22,23,34,34,23,22,1,23,1,1,13,14,20,20,14,13,1,1,23,9,9,14,14,9,9,1,32,14,9,9,9, +9,14,14,9,9,9,9,14,160,9,56,22,3,7,7,10,57,24,4,11,10,5,24,57,10,7,7,3,22,56,9,9, +56,22,3,7,7,10,57,24,5,10,11,4,24,57,10,7,7,3,22,56,9,224,1,18,18,27,27,18,18,1,1,18, +18,27,27,18,18,1,224,9,9,14,14,9,9,9,9,14,14,9,9,176,14,9,9,9,9,14,21,12,33,15,22,21, +20,20,21,22,15,33,12,22,33,23,23,1,1,7,24,33,23,23,1,1,23,23,33,54,12,33,15,22,21,20,20,21, +22,15,33,12,54,13,9,9,1,1,9,9,13,254,239,0,0,3,0,0,0,0,2,64,1,128,0,22,0,40,0,44, +0,0,37,35,34,7,6,29,1,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23,21,37,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,1,53,51,7,2,64,128,14,9,9,254,160,27,18,18,1,1,18,18,27,1, +192,27,18,18,1,254,32,14,9,9,9,9,14,14,9,9,9,9,14,1,96,128,128,160,9,9,14,128,1,18,18,27, +1,0,27,18,18,1,1,18,18,27,160,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,128,128,0,4,0,0, +255,192,2,64,1,191,0,20,0,53,0,71,0,75,0,0,19,54,55,49,54,55,54,23,22,23,22,23,6,7,6,7, +38,39,38,39,49,7,51,22,23,22,23,54,55,54,55,51,22,23,22,23,21,35,34,7,6,29,1,33,38,39,38,39, +17,54,55,54,55,49,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,53,51,7,224,2,17,18, +15,12,12,15,18,17,2,1,18,18,27,27,18,18,1,160,134,10,24,24,32,32,24,24,11,133,27,18,18,1,128,14, +9,9,254,160,27,18,18,1,1,18,18,27,32,14,9,9,9,9,14,14,9,9,9,9,14,1,96,128,128,1,92,19, +28,28,19,11,11,19,28,28,19,25,17,17,1,1,17,17,25,28,28,18,17,1,1,17,18,28,1,18,18,27,160,9, +9,14,128,1,18,18,27,1,0,27,18,18,1,128,9,9,14,14,9,9,9,9,14,14,9,9,255,0,128,128,0,0, +0,1,0,0,255,192,2,64,1,192,0,22,0,0,1,54,31,1,22,23,19,22,7,6,43,1,39,21,33,34,39,38, +55,19,54,63,1,1,13,19,19,224,11,2,32,1,9,10,14,128,128,255,0,14,10,9,1,32,2,11,224,1,186,12, +12,159,10,14,254,224,14,10,11,224,224,11,10,14,1,32,14,10,159,0,0,3,0,0,255,192,2,128,1,192,0,23, +0,52,0,56,0,0,19,22,15,1,6,47,1,38,55,54,31,1,53,52,55,54,51,22,23,21,55,54,23,49,23,54, +31,1,22,31,1,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,55,54,63,1,19,51,39,21,242, +13,15,80,16,16,80,15,13,16,18,39,7,7,10,23,1,41,17,17,123,19,19,168,11,2,24,14,9,9,9,9,14, +253,192,14,9,9,9,9,14,128,24,2,11,168,19,77,77,1,80,17,17,72,12,12,72,17,17,15,13,36,122,10,7, +7,2,22,122,36,13,15,23,14,14,128,8,12,165,9,9,14,14,9,9,9,9,14,14,9,9,165,12,8,128,254,199, +128,128,0,0,0,2,0,0,255,192,2,64,1,192,0,34,0,57,0,0,1,22,21,20,15,1,6,39,38,63,1,33, +23,22,7,6,47,1,38,53,52,63,1,54,23,22,15,1,33,39,38,55,54,31,1,7,22,31,1,22,7,6,43,1, +39,21,35,34,39,38,63,1,54,63,1,54,31,1,2,56,8,8,80,18,16,13,15,34,254,109,33,15,13,17,17,80, +8,8,80,17,17,13,15,33,1,147,34,15,13,16,18,80,93,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24, +2,11,168,19,19,168,1,114,7,11,11,7,72,13,15,18,16,30,30,16,18,15,13,72,7,11,11,7,72,13,15,18, +16,30,30,16,18,15,13,72,217,8,12,160,15,11,11,160,160,11,11,15,160,12,8,128,14,14,128,0,0,2,0,0, +255,192,2,64,1,192,0,32,0,55,0,0,19,33,22,23,22,23,21,6,7,38,39,53,38,39,38,39,33,23,22,7, +6,47,1,38,53,52,63,1,54,23,22,15,1,5,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54,63, +1,54,31,1,87,1,113,51,34,34,1,2,22,22,2,1,20,20,31,254,143,33,15,13,17,17,80,8,8,80,17,17, +13,15,33,1,132,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24,2,11,168,19,19,168,1,120,1,34,34,51, +40,22,2,2,22,40,31,20,20,1,30,16,18,15,13,72,7,11,11,7,72,13,15,18,16,30,223,8,12,160,15,11, +11,160,160,11,11,15,160,12,8,128,14,14,128,0,0,0,0,3,0,7,255,192,2,56,1,192,0,21,0,43,0,66, +0,0,19,22,15,1,6,47,1,38,55,54,31,1,53,54,55,22,23,21,55,54,23,49,33,22,15,1,6,47,1,38, +55,54,31,1,53,54,55,22,23,21,55,54,23,49,7,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54, +63,1,54,31,1,210,13,15,80,16,16,80,15,13,16,18,40,2,22,22,2,40,17,17,1,96,13,15,80,16,16,80, +15,13,16,18,40,2,22,22,2,40,17,17,87,11,2,24,2,10,9,15,96,97,191,15,9,10,2,24,2,11,168,19, +19,168,1,80,17,17,72,12,12,72,17,17,15,13,36,122,22,2,2,22,122,36,13,15,17,17,72,12,12,72,17,17, +15,13,36,122,22,2,2,22,122,36,13,15,183,8,12,160,15,11,11,160,160,11,11,15,160,12,8,128,14,14,128,0, +0,2,0,0,255,192,2,128,1,192,0,18,0,41,0,0,1,54,31,1,22,31,1,22,7,6,43,1,39,38,47,1, +38,39,55,19,22,31,1,22,7,6,43,1,39,21,35,34,39,38,63,1,54,63,1,54,31,1,1,141,19,19,168,11, +2,24,2,10,9,15,146,7,4,20,168,13,14,161,14,11,2,24,2,10,9,15,97,96,191,15,9,10,2,24,2,11, +168,19,19,168,1,185,14,14,128,8,12,160,15,11,11,41,26,16,128,9,3,122,254,224,8,12,160,15,11,11,160,160, +11,11,15,160,12,8,128,14,14,128,0,0,0,3,0,0,255,192,1,64,1,192,0,13,0,28,0,39,0,0,19,52, +55,49,54,51,33,50,23,22,29,1,33,53,5,17,6,7,38,39,53,35,21,6,7,38,39,17,33,7,38,39,6,7, +21,22,23,54,55,53,0,9,9,14,1,0,14,9,9,254,192,1,64,2,22,22,2,224,2,22,22,2,1,64,64,1, +15,15,1,1,15,15,1,1,160,14,9,9,9,9,14,32,32,64,254,120,22,2,2,22,8,8,22,2,2,22,1,136, +144,15,1,1,15,64,15,1,1,15,64,0,0,6,0,0,255,192,2,64,1,192,0,13,0,28,0,39,0,53,0,68, +0,79,0,0,19,50,23,49,22,29,1,33,53,52,55,54,59,1,7,33,17,6,7,38,39,53,35,21,6,7,38,39, +17,23,21,22,23,54,55,53,38,39,6,7,37,50,23,49,22,29,1,33,53,52,55,54,59,1,7,33,17,6,7,38, +39,53,35,21,6,7,38,39,17,23,21,22,23,54,55,53,38,39,6,7,224,14,9,9,255,0,9,9,14,192,224,1, +0,2,22,22,2,160,2,22,22,2,176,1,15,15,1,1,15,15,1,1,112,14,9,9,255,0,9,9,14,192,224,1, +0,2,22,22,2,160,2,22,22,2,176,1,15,15,1,1,15,15,1,1,192,9,9,14,32,32,14,9,9,96,254,120, +22,2,2,22,8,8,22,2,2,22,1,136,144,64,15,1,1,15,64,15,1,1,15,240,9,9,14,32,32,14,9,9, +96,254,120,22,2,2,22,8,8,22,2,2,22,1,136,144,64,15,1,1,15,64,15,1,1,15,0,0,0,7,0,0, +255,193,2,64,1,191,0,26,0,53,0,88,0,93,0,97,0,115,0,133,0,0,19,22,23,49,22,7,6,21,20,23, +22,7,6,7,6,39,38,39,38,53,52,55,54,55,54,23,49,33,54,23,49,22,23,22,21,20,7,6,7,6,39,38, +39,38,55,54,53,52,39,38,55,54,55,49,3,22,7,49,6,7,6,39,38,47,1,35,7,6,7,6,39,38,39,38, +55,19,38,53,54,55,54,55,22,23,22,23,20,7,19,47,1,35,7,51,39,51,39,7,39,20,23,22,7,6,39,38, +53,52,55,54,23,22,7,6,21,49,33,20,7,6,39,38,55,54,55,38,39,38,55,54,23,22,21,49,63,12,5,5, +5,16,16,5,5,5,12,13,12,12,5,21,21,5,12,12,13,1,194,13,12,12,5,21,21,5,12,12,13,12,5,5, +5,16,16,5,5,5,12,36,5,4,5,12,12,12,12,6,21,220,21,6,12,12,12,12,5,4,5,137,12,1,18,18, +27,27,18,18,1,12,137,108,14,134,14,162,119,76,38,38,98,11,7,19,21,11,15,15,11,21,19,7,11,1,64,15, +11,21,19,7,10,1,1,10,7,19,21,11,15,1,190,6,12,11,13,39,45,45,38,13,12,12,6,4,5,5,12,50, +58,58,50,12,5,5,4,4,5,5,12,50,58,58,50,12,5,5,4,6,12,12,13,38,45,45,39,13,11,12,6,254, +47,12,12,12,6,5,4,5,12,45,45,12,5,4,5,6,12,12,12,1,46,16,21,27,18,18,1,1,18,18,27,21, +16,254,210,83,32,32,96,83,83,160,29,25,22,9,8,19,35,39,39,35,19,7,11,21,25,29,39,35,19,8,9,22, +25,29,29,25,21,11,7,19,35,39,0,0,0,6,0,0,255,192,2,0,1,192,0,59,0,63,0,69,0,73,0,77, +0,88,0,0,19,54,31,1,22,23,22,7,6,7,21,20,7,6,43,1,23,51,50,23,22,21,20,7,6,43,1,34, +49,48,43,1,34,49,48,49,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,61,1,38,39,38,55,54,63,1, +19,39,7,51,39,23,55,39,35,15,2,55,39,31,1,39,7,39,6,7,22,23,51,54,55,38,39,35,242,14,14,160, +12,4,4,5,10,19,9,9,14,5,32,69,14,9,9,9,9,14,95,1,1,254,1,96,14,9,9,9,9,14,69,32, +5,14,9,9,19,10,5,4,4,12,160,73,59,58,117,122,63,63,5,116,5,9,11,46,35,110,45,11,34,118,15,1, +1,15,160,15,1,1,15,160,1,189,6,6,80,7,12,12,12,17,1,80,14,9,9,192,9,9,14,14,9,9,9,9, +14,14,9,9,192,9,9,14,80,1,17,12,12,12,7,80,254,67,49,49,164,53,53,28,28,55,67,38,29,29,38,67, +29,240,1,15,15,1,1,15,15,1,0,0,0,7,0,0,255,192,2,128,1,192,0,34,0,47,0,60,0,73,0,86, +0,99,0,136,0,0,1,54,55,49,54,55,51,22,23,22,23,21,51,53,54,55,22,23,21,51,22,23,22,23,21,6, +7,6,7,33,38,39,38,39,17,23,22,23,51,54,55,53,38,39,35,6,7,21,23,6,7,21,22,23,51,54,55,53, +38,39,35,7,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,7,22,23, +51,54,55,53,38,39,35,6,7,21,37,20,7,22,23,6,7,6,7,35,21,20,7,6,35,34,39,38,61,1,35,38, +39,38,39,54,55,38,53,54,55,54,55,22,23,22,23,1,32,1,13,14,20,96,20,14,13,1,40,2,22,22,2,24, +20,14,13,1,1,13,14,20,255,0,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1,16,15,1,1,15,32,15, +1,1,15,32,16,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1, +1,15,32,15,1,254,224,2,32,2,1,22,23,34,16,10,9,13,14,9,9,16,35,22,22,1,2,31,1,1,27,27, +41,41,27,27,1,1,144,20,14,13,1,1,13,14,20,144,72,22,2,2,22,72,1,13,14,20,224,20,14,13,1,1, +13,14,20,1,160,64,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15, +32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,240,9,7,23, +41,35,22,22,1,160,14,9,9,9,9,14,160,1,22,22,35,41,23,7,9,41,27,27,1,1,27,27,41,0,0,0, +0,1,0,0,255,192,2,0,1,192,0,37,0,0,37,7,23,22,7,6,7,5,6,39,38,55,19,54,55,54,31,1, +55,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,35,34,39,49,1,88,99,66,12,4,5,16,255,0,19,14, +13,5,80,6,17,18,13,65,99,11,11,95,22,27,28,21,20,20,96,11,15,15,11,235,99,65,13,18,17,6,80,5, +13,14,18,1,0,17,5,4,12,66,99,11,15,15,11,96,20,20,21,28,27,22,95,11,11,0,0,0,0,4,0,0, +255,192,2,0,1,192,0,33,0,55,0,77,0,99,0,0,19,22,29,1,51,54,55,51,22,23,22,23,6,7,6,7, +35,38,39,35,21,20,7,6,47,1,38,39,54,63,1,54,23,49,23,52,55,49,54,59,1,50,23,22,29,1,20,7, +6,43,1,34,39,38,61,1,7,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,1,33,50, +23,49,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54,51,33,241,15,89,7,24,88,20,14,13,1,1,13, +14,20,88,24,7,89,15,15,16,192,17,1,1,17,192,16,15,47,9,9,14,160,14,9,9,9,9,14,160,14,9,9, +160,14,9,9,9,9,14,96,14,9,9,9,9,14,96,1,96,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1, +0,1,187,9,18,72,22,2,1,13,14,20,20,14,13,1,2,22,72,18,9,9,7,96,10,19,19,10,96,7,9,251, +14,9,9,9,9,14,64,14,9,9,9,9,14,64,128,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14, +64,14,9,9,9,9,14,64,14,9,9,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74,0,92,0,113, +0,0,19,54,55,49,54,55,33,22,23,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7, +6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,5,53,39,35,21,51,5,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,3, +38,7,6,31,1,35,6,7,22,23,51,7,6,23,22,63,1,54,47,1,0,1,13,14,20,1,64,20,14,13,1,51, +25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13, +1,2,32,77,51,128,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13, +14,20,20,14,13,1,1,13,14,20,224,16,17,14,14,39,166,22,2,2,22,166,39,14,14,17,16,80,15,15,80,1, +144,20,14,13,1,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,1,13,14,20,1,64,208,19,77,96,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,17,14,14,17,16,40,2,22,22,2,39,17,16,15, +15,80,16,17,80,0,0,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74,0,92,0,113,0,0,19,54, +55,49,54,55,33,22,23,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39, +38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,5,53,39,35,21,51,5,54,55,49,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,37,54,55,49,54, +55,38,39,38,39,38,7,6,7,6,7,22,23,22,23,49,0,1,13,14,20,1,64,20,14,13,1,51,25,20,77,19, +14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13,1,2,32,77, +51,128,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,254,240,31,20,20,1,2,20,21,17,13,11,17,21,20,2,1,20,20,31,1,144,20,14,13,1, +1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41, +1,13,14,20,1,64,208,19,77,96,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,96,1,18,19,29,21,33,33,22,13,13,22,33,33,21,29,19,18,1,0, +0,4,0,0,255,224,2,128,1,160,0,66,0,71,0,89,0,107,0,0,19,54,55,49,54,55,51,22,23,51,22,31, +1,20,59,1,22,23,22,23,21,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38, +39,38,39,35,34,39,38,53,52,55,54,51,53,34,39,38,61,1,52,55,54,55,53,5,39,35,21,51,5,54,55,49, +54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39, +32,1,18,18,27,224,37,18,52,41,18,53,1,4,27,18,18,1,14,9,9,9,9,14,32,1,27,27,41,41,27,27, +1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9,14,14,9,9,9,9,14,1,182,43,43,86,254,202,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,96,27,18,18,1,2,30,2,36,119,2,1,18,19,26,32,10,9,14,14,9,9,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,9,9,14,14,9,10,32,9,9,14,96,13,9,9,1,31,128,96,96,208,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,6,0,0, +255,224,2,128,1,160,0,67,0,72,0,90,0,108,0,131,0,156,0,0,1,22,23,51,22,31,1,6,23,50,21,51, +22,23,22,23,21,50,23,22,21,20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35, +34,39,38,53,52,55,54,51,53,34,39,38,61,1,52,55,54,51,53,54,55,54,55,51,23,21,51,39,35,7,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,3,38,7,6,7,21,22,23,54,55,53,23,22,55,54,55,53,38,39,6,7,21,39,7,38,39,6,7,21,22,23, +22,23,54,55,54,55,53,38,39,6,7,21,6,7,38,39,53,1,64,37,18,52,41,18,53,1,1,1,4,27,18,18, +1,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9,14, +14,9,9,9,9,14,1,18,18,27,224,64,86,43,43,224,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,227,7,11,10,1,1,15,15,1,35,7,11,10,1, +1,15,15,1,35,125,1,15,15,1,1,13,14,20,20,14,13,1,1,15,15,1,1,15,15,1,1,160,2,30,2,36, +119,1,1,1,1,18,18,27,32,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,9, +9,14,14,9,9,32,9,9,14,96,14,9,9,32,27,18,18,1,96,96,96,208,1,13,14,20,20,14,13,1,1,13, +14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,41,9,3,4,11,96,15,1, +1,15,43,52,9,3,4,11,96,15,1,1,15,43,52,9,15,1,1,15,64,20,14,13,1,1,13,14,20,64,15,1, +1,15,64,15,1,1,15,64,0,5,0,0,255,192,2,128,1,192,0,39,0,71,0,81,0,90,0,99,0,0,1,29, +2,49,22,23,21,20,23,39,7,6,39,38,61,1,52,63,1,53,7,6,39,38,61,1,52,63,1,53,54,55,54,55, +22,23,22,23,49,23,54,55,49,54,55,33,22,23,22,23,21,6,7,21,6,7,35,38,39,53,35,21,6,7,35,38, +39,53,38,39,53,23,7,51,39,38,39,35,6,7,49,23,54,55,38,39,6,7,22,23,39,6,7,22,23,54,55,38, +39,1,0,3,29,2,90,91,8,6,7,6,50,123,8,7,6,8,136,1,16,15,24,24,16,15,1,32,1,13,14,20, +1,0,20,14,13,1,2,30,2,22,16,22,2,160,2,22,16,22,2,30,2,80,16,224,16,6,14,152,14,6,200,22, +2,2,22,22,2,2,22,208,22,2,2,22,22,2,2,22,1,106,97,1,228,34,17,33,8,6,29,30,2,5,4,8, +32,8,4,40,82,37,3,5,5,8,64,9,5,81,107,26,29,29,2,2,29,29,26,90,20,14,13,1,1,13,14,20, +224,33,12,43,22,2,2,22,40,40,22,2,2,22,43,12,33,224,79,49,49,14,1,1,14,145,2,22,22,2,2,22, +22,2,48,2,22,22,2,2,22,22,2,0,0,8,0,0,255,192,2,128,1,192,0,10,0,21,0,39,0,58,0,75, +0,98,0,116,0,134,0,0,19,54,55,33,22,23,6,7,33,38,39,17,54,55,33,22,23,6,7,33,38,39,19,20, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,7,54,55,49,54,55,51,50,23,6,7,6,7,35,34,39, +38,53,49,37,54,59,1,22,23,22,23,20,7,6,43,1,38,39,38,39,7,22,23,22,21,6,7,6,43,1,34,39, +38,53,52,55,54,55,54,59,1,50,23,55,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,5,52,55, +49,54,55,22,23,22,23,6,7,6,7,38,39,38,53,0,2,22,2,80,22,2,2,22,253,176,22,2,2,22,2,80, +22,2,2,22,253,176,22,2,211,19,18,27,27,18,18,1,1,18,18,27,27,18,19,179,1,18,18,27,96,19,14,28, +20,19,8,86,14,9,9,1,128,14,18,96,27,18,18,1,9,9,14,82,9,20,21,28,25,51,18,6,1,9,9,13, +224,14,9,9,5,18,48,11,14,96,11,10,172,19,18,27,27,18,18,1,1,18,18,27,27,18,19,254,191,23,23,34, +34,22,23,1,1,23,22,34,34,23,23,1,168,22,2,2,22,22,2,2,22,254,48,22,2,2,22,22,2,2,22,1, +72,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27,18,18,1,9,12,23,22,30,9,9,14,55,9, +1,18,18,27,14,9,9,30,23,23,11,25,14,48,15,17,14,9,9,9,9,14,17,15,47,14,3,2,130,27,18,18, +1,1,18,18,27,27,18,18,1,1,18,18,27,16,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,0, +0,7,0,0,255,224,2,128,1,160,0,17,0,36,0,53,0,76,0,94,0,112,0,132,0,0,19,20,7,49,6,7, +38,39,38,39,54,55,54,55,22,23,22,21,7,54,55,49,54,55,51,50,23,6,7,6,7,35,34,39,38,53,49,37, +54,59,1,22,23,22,23,20,7,6,43,1,38,39,38,39,7,22,23,22,21,6,7,6,43,1,34,39,38,53,52,55, +54,55,54,59,1,50,23,55,20,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,21,5,52,55,49,54,55,22, +23,22,23,6,7,6,7,38,39,38,53,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,211, +19,18,27,27,18,18,1,1,18,18,27,27,18,19,179,1,18,18,27,96,19,14,28,20,19,8,86,14,9,9,1,128, +14,18,96,27,18,18,1,9,9,14,82,9,20,21,28,25,51,18,6,1,9,9,13,224,14,9,9,5,18,48,11,14, +96,11,10,172,19,18,27,27,18,18,1,1,18,18,27,27,18,19,254,191,23,23,34,34,22,23,1,1,23,22,34,34, +23,23,1,110,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,1,96,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,160,27,18,18,1,9,12,23,22,30,9,9,14,55,9,1,18,18,27,14,9,9,30,23,23,11, +25,14,48,15,17,14,9,9,9,9,14,17,15,47,14,3,2,130,27,18,18,1,1,18,18,27,27,18,18,1,1,18, +18,27,16,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,208,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,10,0,0,255,193,2,127,1,192,0,10,0,21,0,33,0,44,0,62,0,92,0,111,0,126,0,140, +0,158,0,0,19,22,7,6,47,1,38,55,54,31,1,37,54,23,22,15,1,6,39,38,63,1,1,55,54,23,22,15, +1,6,39,38,55,49,37,38,55,54,31,1,22,7,6,47,1,37,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,23,54,53,50,51,50,59,1,50,51,50,51,22,23,22,23,20,49,22,21,6,7,35,38,39,52,55,54,55, +49,39,52,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,53,49,23,50,23,6,7,6,7,35,38,39,54,55, +54,55,51,5,35,38,39,54,59,1,22,23,22,23,6,7,49,39,54,55,49,54,55,22,23,22,23,6,7,6,7,38, +39,38,39,112,15,15,16,17,72,14,14,17,17,71,1,231,17,16,15,15,72,16,17,14,14,72,253,176,72,17,16,15, +15,71,17,17,14,14,2,8,14,14,17,16,72,15,15,16,17,72,254,241,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,10,1,5,3,3,2,80,2,3,3,4,39,15,1,1,4,2,22,176,22,2,4,14,40,138,14,13,21, +20,14,13,1,1,13,14,20,21,13,14,91,14,11,25,17,17,6,56,25,2,1,15,15,22,70,1,42,56,14,52,13, +13,70,22,15,15,1,2,25,101,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,113,17,16,15,15,71, +17,17,14,14,72,72,14,14,17,17,71,15,15,16,17,72,254,48,72,14,14,17,16,72,15,15,16,17,39,16,17,14, +14,72,17,16,15,15,72,240,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,98,1,1,9,34,3,1,1, +11,13,22,2,2,22,13,11,37,9,114,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,6,10,19,19, +26,2,25,22,15,15,1,80,53,21,6,1,15,15,22,25,2,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,0,0,0,8,0,0,255,192,2,128,1,192,0,17,0,34,0,48,0,72,0,90,0,108,0,130,0,152,0,0, +19,6,7,49,6,7,38,39,38,53,52,55,54,55,22,23,22,23,7,54,55,49,54,55,51,50,23,6,7,6,7,35, +38,39,49,37,54,59,1,22,23,22,23,6,7,35,38,39,49,7,22,23,22,21,6,7,35,38,39,52,55,54,55,50, +51,50,59,1,50,51,50,51,49,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,37,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55, +54,55,33,1,20,23,49,22,51,33,50,55,54,53,17,52,39,38,35,33,34,7,6,21,17,224,1,13,14,20,21,13, +14,14,13,21,20,14,13,1,128,1,15,15,22,70,14,11,25,17,17,6,56,25,2,1,43,13,13,70,22,15,15,1, +2,25,56,14,52,23,41,15,4,2,22,176,22,2,4,15,40,5,3,3,2,80,2,3,3,4,140,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,255,0,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,32,41, +27,27,1,1,27,27,41,254,64,41,27,27,1,1,27,27,41,1,192,254,32,9,9,14,1,192,14,9,9,9,9,14, +254,64,14,9,9,1,16,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,133,22,15,15,1,6,10,19,19, +26,2,25,47,6,1,15,15,22,25,2,53,21,26,10,38,11,13,22,2,2,22,13,11,38,10,112,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,16,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,192,1,27,27, +41,254,192,41,27,27,1,1,27,27,41,1,64,41,27,27,1,254,96,14,9,9,9,9,14,1,64,14,9,9,9,9, +14,254,192,0,0,10,0,0,255,192,2,128,1,192,0,16,0,35,0,50,0,64,0,87,0,105,0,123,0,140,0,157, +0,174,0,0,19,6,7,38,39,53,52,55,54,59,1,22,23,6,7,35,21,23,52,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,53,49,23,50,23,6,7,6,7,35,38,39,54,55,54,55,51,5,35,38,39,54,59,1,22,23, +22,23,6,7,49,7,6,7,35,38,39,52,55,54,55,50,51,50,59,1,50,51,50,51,22,23,22,21,39,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +55,54,55,51,50,23,22,29,1,6,7,38,39,53,35,38,39,1,51,22,23,6,7,35,34,39,38,61,1,54,55,22, +23,21,33,51,53,54,55,22,23,21,20,7,6,43,1,38,39,54,55,48,2,22,22,2,9,9,14,104,22,2,2,22, +88,80,14,13,21,20,14,13,1,1,13,14,20,21,13,14,91,14,11,25,17,17,6,56,25,2,1,15,15,22,70,1, +42,56,14,52,13,13,70,22,15,15,1,2,25,85,2,22,176,22,2,4,15,40,5,3,3,2,80,2,3,3,4,41, +15,4,16,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,32,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,96,2,22,104,14,9,9,2,22,22,2,88,22,2,254,80,88,22,2,2,22,104,14,9,9,2,22,22, +2,1,200,88,2,22,22,2,9,9,14,104,22,2,2,22,1,56,22,2,2,22,104,14,9,9,2,22,22,2,88,40, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,80,6,10,19,19,26,2,25,22,15,15,1,80,53,21,6, +1,15,15,22,25,2,24,22,2,2,22,13,11,38,10,10,38,11,13,184,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,16,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,168,22,2,9,9,14,104,22,2,2,22, +88,2,22,254,72,2,22,22,2,9,9,14,104,22,2,2,22,88,88,22,2,2,22,104,14,9,9,2,22,22,2,0, +0,4,0,0,255,192,2,0,1,160,0,31,0,36,0,54,0,70,0,0,19,52,55,49,54,59,1,50,23,22,21,20, +7,6,35,21,6,7,20,23,6,7,38,39,38,39,17,34,39,38,53,49,23,51,53,35,21,5,6,7,49,6,7,38, +39,38,39,54,55,54,55,22,23,22,23,39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,0,9,9,14,192, +14,9,9,9,9,14,31,1,15,28,51,41,27,27,1,14,9,9,96,64,64,1,160,2,40,41,61,61,41,40,2,2, +40,41,61,61,41,40,2,99,61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,14,9,9,9,9,14,14,9, +9,171,44,57,38,33,39,2,1,27,27,41,1,32,9,9,14,128,96,96,176,61,41,40,2,2,40,41,61,61,41,40, +2,2,40,41,61,43,60,28,10,10,11,11,40,10,10,72,11,11,10,10,0,5,0,32,255,192,2,33,1,160,0,74, +0,79,0,145,0,163,0,172,0,0,1,50,23,49,22,21,20,7,6,35,21,6,7,6,21,20,23,20,49,48,51,49, +48,35,20,57,1,34,51,48,49,34,7,6,21,20,23,22,23,48,49,34,51,49,52,21,48,49,48,21,50,53,21,34, +49,48,49,6,23,6,7,38,39,38,39,17,34,39,38,53,52,55,54,59,1,7,53,35,21,51,55,22,23,22,23,22, +55,54,23,22,7,6,23,22,23,22,23,6,7,6,7,6,23,22,7,6,39,38,7,6,7,6,7,38,39,38,39,38, +7,6,39,38,55,54,39,38,39,38,39,54,55,54,55,54,39,38,55,54,23,22,55,54,55,54,55,49,7,50,55,49, +54,53,52,39,38,35,34,7,6,21,20,23,22,51,23,6,7,22,23,54,55,38,39,1,0,14,9,9,9,9,14,5, +4,16,16,1,1,1,1,24,16,16,16,16,24,1,1,1,1,17,1,28,43,41,27,27,1,14,9,9,9,9,14,192, +64,64,64,192,22,2,1,19,19,17,17,17,14,14,15,8,7,23,22,2,2,22,23,7,8,15,14,14,17,17,17,19, +19,1,2,22,22,2,2,18,19,17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8,15,14,14,17,17,17,19, +18,2,2,22,32,14,9,9,9,9,14,14,9,9,9,9,14,64,22,2,2,22,22,2,2,22,1,160,9,9,14,14, +9,9,111,3,4,17,23,22,17,1,1,16,16,24,24,15,16,1,1,1,1,1,1,18,23,29,2,1,27,27,41,1, +32,9,9,14,14,9,9,160,96,96,2,2,22,22,8,8,15,14,14,17,17,17,19,18,2,2,22,22,2,1,19,19, +17,17,17,14,14,15,8,8,22,22,2,2,22,22,8,8,15,14,14,17,17,17,19,19,1,2,22,22,2,2,18,19, +17,17,17,14,14,15,8,8,22,22,2,162,9,9,14,14,9,9,9,9,14,14,9,9,8,2,22,22,2,2,22,22, +2,0,0,0,0,5,0,0,255,192,2,128,1,192,0,10,0,103,0,121,0,130,0,141,0,0,1,6,39,38,63,1, +54,23,22,15,1,39,22,23,55,54,23,22,15,1,22,7,54,23,55,54,23,22,15,1,22,23,6,7,38,47,1,7, +22,23,6,7,20,21,48,21,6,47,1,7,22,31,1,22,15,1,6,35,34,47,1,7,6,35,34,39,38,53,52,63, +1,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54,31,1,22,23,55,39,38,53,52,63,1,54, +31,1,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23,39,21,22, +23,54,55,53,38,39,6,7,1,160,16,17,14,14,88,17,16,15,15,88,99,7,5,46,17,16,15,15,57,7,9,31, +32,59,17,16,15,15,45,7,6,70,43,11,9,12,32,26,24,24,1,46,36,13,31,43,35,11,9,9,11,30,38,39, +29,12,69,10,13,13,10,9,9,69,10,28,28,11,12,11,11,32,5,30,10,28,28,11,11,12,10,32,6,30,10,29, +29,11,11,12,11,35,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,144,22,2,2,22,22,2,2,22,17, +2,14,15,1,1,15,14,2,1,64,15,15,16,17,88,14,14,17,17,87,89,6,8,46,14,14,17,17,58,33,33,10, +7,59,14,14,17,16,47,5,6,11,52,6,9,12,31,4,12,41,50,1,1,1,7,34,12,32,4,33,10,13,11,11, +28,28,12,69,9,9,10,13,13,10,68,11,30,38,38,30,12,8,8,12,33,42,30,11,29,39,38,29,12,9,9,12, +32,42,30,11,29,38,39,29,12,9,9,12,254,183,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,96,2, +22,22,2,2,22,22,2,176,80,15,1,1,15,80,15,1,1,15,0,0,0,2,0,32,255,192,1,224,1,192,0,61, +0,70,0,0,1,54,55,49,54,55,51,22,23,22,23,17,6,7,6,7,38,39,38,39,53,52,39,38,35,34,7,6, +29,1,6,7,6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,21,20,23,22,51,50,55,54,61,1,35,38,39, +38,39,55,6,7,22,23,54,55,38,39,1,0,1,27,27,41,38,38,26,25,1,1,39,38,58,58,38,39,1,12,11, +17,17,11,12,1,13,14,20,20,14,13,1,1,39,38,58,58,38,39,1,12,11,17,17,11,12,32,41,27,27,1,120, +22,2,2,22,22,2,2,22,1,96,41,27,27,1,1,25,26,38,254,226,58,38,39,1,1,39,38,58,80,17,11,12, +12,11,17,168,20,14,13,1,1,13,14,20,168,58,38,39,1,1,39,38,58,80,17,11,12,12,11,17,184,1,27,27, +41,32,2,22,22,2,2,22,22,2,0,0,0,5,0,0,255,224,2,128,1,160,0,19,0,39,0,65,0,90,0,116, +0,0,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,17,50,23,49,22,21,20,7,6,35, +33,34,39,38,53,52,55,54,51,33,37,54,31,1,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1, +39,38,55,49,5,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,54,31,1,55,54,31, +1,55,54,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,49,2,96,14,9,9,9,9,14,253, +192,14,9,9,9,9,14,2,64,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64,253,167,17,17,55,55,17, +16,15,15,54,54,15,15,16,17,55,55,17,17,14,14,55,55,14,14,1,57,55,17,16,15,15,54,54,15,15,16,17, +55,56,16,17,14,14,55,55,14,14,17,16,56,135,17,16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17, +14,14,55,55,14,14,1,160,9,9,14,14,9,9,9,9,14,14,9,9,254,128,9,9,14,14,9,9,9,9,14,14, +9,9,249,14,14,55,55,14,14,17,16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17,55,55,14,14,17, +16,56,55,17,16,15,15,54,54,15,15,16,17,55,56,16,17,14,14,55,55,14,14,55,55,14,14,17,16,56,55,17, +16,15,15,54,54,15,15,16,17,55,56,16,17,0,0,0,0,2,0,0,255,192,1,64,1,192,0,17,0,76,0,0, +19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,34,39,49,38,63,1,7,6,7,6,39,38,39, +38,63,1,54,55,22,31,1,22,7,6,7,6,39,38,47,1,23,22,7,6,43,1,21,20,7,6,35,34,39,38,61, +1,35,21,20,7,6,35,34,39,38,61,1,35,223,1,17,18,28,26,19,18,1,1,18,19,26,28,18,17,1,153,8, +5,4,2,31,28,9,13,12,11,11,2,1,8,58,37,58,58,37,59,7,1,2,11,11,12,13,8,29,30,3,4,5, +8,18,9,9,14,14,9,9,16,9,9,14,14,9,9,18,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18, +18,27,254,176,7,6,8,93,37,11,2,1,7,9,13,12,11,79,44,2,2,44,79,11,12,13,9,7,1,2,11,37, +93,8,6,7,80,14,9,9,9,9,14,80,80,14,9,9,9,9,14,80,0,2,0,16,255,192,1,111,1,192,0,17, +0,74,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,22,23,50,55,54,63,1,54,55, +54,23,22,23,22,15,1,6,7,17,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,53,17,38,47, +1,38,55,54,55,54,23,22,31,1,22,23,22,51,49,1,0,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18, +1,100,17,19,31,25,26,17,18,8,12,13,12,11,2,3,7,18,28,45,9,9,14,14,9,9,32,9,9,14,14,9, +9,43,28,20,7,3,2,11,12,12,13,8,19,23,36,1,2,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1, +18,18,27,106,5,1,14,14,26,27,12,2,3,7,8,12,13,12,27,43,22,254,254,14,9,9,9,9,14,96,96,14, +9,9,9,9,14,1,3,21,42,28,12,12,13,8,7,3,2,11,30,32,13,1,0,0,0,4,0,0,255,192,2,64, +1,192,0,29,0,33,0,51,0,67,0,0,19,54,55,49,54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23, +22,23,6,35,33,38,39,38,39,17,5,53,23,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +39,7,39,38,7,6,31,1,22,63,1,54,39,38,7,49,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20, +34,5,5,255,0,27,18,18,1,1,0,128,128,1,64,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,99, +61,29,11,11,10,10,40,11,11,72,10,10,11,11,1,128,27,18,18,1,128,14,9,9,39,16,46,45,62,45,37,37, +24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,43,60,28,10, +10,11,11,40,10,10,72,11,11,10,10,0,0,4,0,0,255,192,2,64,1,192,0,29,0,33,0,51,0,76,0,0, +19,54,55,49,54,55,51,21,20,23,22,59,1,21,6,7,6,7,20,23,22,23,6,35,33,38,39,38,39,17,5,53, +23,35,23,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,39,38,15,1,39,38,7,6,31,1, +7,6,23,22,63,1,23,22,55,54,47,1,55,0,1,18,18,27,160,9,9,14,128,56,36,35,1,20,20,34,5,5, +255,0,27,18,18,1,1,0,128,128,32,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,203,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,1,128,27,18,18,1,128,14,9,9,39,16, +46,45,62,45,37,37,24,1,1,18,18,27,1,128,64,128,128,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40, +41,61,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,0,0,5,0,0, +255,193,2,128,1,192,0,17,0,53,0,71,0,89,0,99,0,0,19,20,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,21,23,35,23,22,7,6,7,6,39,38,47,1,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23,17, +6,7,6,7,35,39,51,39,1,17,51,48,49,48,49,53,54,55,54,55,54,55,54,61,1,35,33,21,20,7,6,7, +20,49,20,49,23,51,22,31,1,51,17,35,3,39,6,7,21,48,49,20,53,23,191,14,13,21,20,13,14,1,1,14, +13,20,21,13,14,194,74,84,7,3,2,11,12,12,13,8,33,254,252,20,14,13,1,1,13,14,20,2,32,20,14,13, +1,1,13,14,20,170,43,46,40,254,190,64,1,27,27,46,28,15,16,224,1,33,20,19,33,41,72,22,14,79,68,224, +86,69,5,1,75,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,208,126,11,13,13,8,7,3,2, +11,50,1,13,14,20,1,96,20,14,13,1,1,13,14,20,254,160,20,14,13,1,64,48,1,16,254,192,74,50,39,40, +19,11,24,23,30,10,10,41,35,35,22,1,1,62,1,17,95,1,64,254,192,103,13,16,73,1,1,1,0,1,0,0, +255,192,2,0,1,192,0,62,0,0,5,35,17,38,39,38,39,6,7,6,7,21,22,23,6,7,6,7,38,39,38,39, +54,55,53,54,55,54,55,50,23,53,54,55,54,55,22,23,22,23,21,22,23,6,7,6,7,38,39,38,39,54,55,53, +38,39,38,39,6,7,6,7,17,1,32,64,1,15,16,24,24,16,15,1,46,2,1,22,23,34,34,23,22,1,2,46, +1,34,34,51,31,25,1,34,34,51,51,34,34,1,46,2,1,22,23,34,34,23,22,1,2,46,1,15,16,24,24,16, +15,1,64,1,8,24,16,15,1,1,15,16,24,12,17,54,22,33,33,29,29,33,32,23,54,17,12,51,34,34,1,14, +22,51,34,34,1,1,34,34,51,12,17,54,22,33,33,29,29,33,32,23,54,17,12,24,16,15,1,1,15,16,24,254, +120,0,0,0,0,2,0,0,255,224,2,128,1,160,0,42,0,47,0,0,37,21,6,7,6,7,33,34,39,38,53,52, +55,54,51,33,53,33,34,39,38,61,1,39,38,39,38,53,52,63,1,54,55,54,51,50,23,5,22,23,22,21,49,39, +37,21,33,53,2,128,1,13,14,20,253,240,14,9,9,9,9,14,1,128,254,160,14,9,9,30,15,9,10,8,36,25, +36,36,42,41,37,1,70,25,14,14,192,254,192,1,64,149,133,20,14,13,1,9,9,14,14,9,9,48,9,9,14,117, +5,3,11,11,15,14,11,47,34,18,18,18,164,12,23,22,28,11,57,73,16,0,0,0,0,4,0,0,255,192,1,191, +1,192,0,60,0,82,0,100,0,118,0,0,19,34,15,1,6,39,38,63,1,54,55,33,22,31,1,22,7,6,47,1, +38,43,1,21,51,22,23,22,23,21,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38,39,38,63,1,38, +39,53,54,55,54,55,51,53,35,23,34,7,49,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,43,1,21, +34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20, +23,22,51,87,19,12,13,16,18,16,12,13,27,42,1,18,42,26,14,12,17,17,16,12,13,19,113,40,41,27,27,1, +2,35,66,5,3,3,8,39,13,9,55,128,55,9,13,40,8,2,3,5,66,35,2,1,27,27,41,40,113,73,14,9, +9,9,9,14,128,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14, +9,9,9,9,14,1,144,15,16,16,12,16,18,16,32,1,1,32,16,18,16,12,16,16,15,48,1,27,27,41,160,47, +28,66,6,6,6,1,9,55,55,9,1,6,6,6,66,28,47,160,41,27,27,1,48,112,9,9,14,32,14,9,9,9, +9,14,32,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,0,255,192,1,255,1,192,0,29,0,33,0,0,1,54,39,49,38,39,33,6,7,6,31,1,21,35,6,7, +6,7,22,23,51,54,55,38,39,38,39,35,53,55,7,39,33,7,1,246,15,8,8,23,254,68,23,8,8,15,214,48, +20,14,13,1,1,15,224,15,1,1,13,13,20,47,212,246,149,1,42,149,1,134,18,19,19,2,2,19,19,18,214,176, +1,13,14,20,15,1,1,15,20,14,13,1,176,214,155,149,149,0,0,0,0,1,0,0,255,192,2,0,1,192,0,45, +0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,50,23,53,5,21,6,7,6,7,38,39,38,39,54,55,54, +55,50,23,53,52,55,54,55,37,54,51,50,23,22,21,3,1,255,1,27,27,40,40,27,27,1,1,27,27,40,17,15, +255,0,2,27,27,41,41,27,26,1,1,27,27,40,17,15,7,6,10,1,63,6,5,14,9,9,1,81,34,23,22,1, +1,22,23,33,34,22,22,1,5,146,76,208,34,23,22,1,1,22,23,34,34,22,22,1,5,231,11,8,9,3,95,1, +9,9,14,254,177,0,0,0,0,2,0,0,255,192,2,0,1,191,0,28,0,46,0,0,37,39,54,39,38,39,38,39, +38,7,6,7,6,23,22,23,22,23,22,55,23,22,51,50,55,54,53,52,39,37,54,55,49,54,55,22,23,22,23,6, +7,6,7,38,39,38,39,1,244,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16, +12,12,12,254,91,1,37,36,54,54,37,36,1,1,36,37,54,54,36,37,1,4,120,62,83,70,48,49,10,8,30,31, +55,56,69,70,49,50,10,9,42,119,12,12,12,16,16,12,236,54,36,37,1,1,37,36,54,54,36,37,1,1,37,36, +54,0,0,0,0,1,0,0,255,224,2,0,1,149,0,31,0,0,19,53,54,55,54,55,54,23,22,31,1,55,54,55, +54,23,22,23,22,23,21,6,15,1,6,35,34,47,1,38,39,49,0,1,33,33,52,34,33,33,25,12,11,26,32,33, +35,52,33,33,1,1,47,180,12,16,16,12,180,47,1,1,1,6,54,38,39,10,5,10,10,25,12,12,25,10,10,5, +10,39,38,54,6,65,44,169,11,11,169,44,65,0,0,0,0,1,0,24,255,192,2,40,1,192,0,30,0,0,1,23, +22,23,22,15,1,23,22,7,6,47,1,7,6,39,38,63,1,39,38,55,54,63,2,54,55,22,31,1,1,125,144,19, +7,5,13,104,24,3,16,16,17,129,128,18,16,15,2,25,104,14,6,6,19,144,64,10,19,20,9,64,1,42,22,3, +18,19,14,102,147,19,12,11,9,68,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,1,17,132,0,2,0,0, +255,192,1,192,1,192,0,17,0,36,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35, +6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,224,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,51,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,192,1,36,37,54,54,37,36,1,1,36,37, +54,54,37,36,1,48,2,49,49,73,15,10,10,10,10,15,73,49,49,2,0,9,0,0,255,224,1,255,1,160,0,20, +0,33,0,46,0,59,0,72,0,85,0,98,0,111,0,124,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55, +54,53,17,52,39,38,39,1,6,7,35,38,39,53,54,55,51,22,21,23,53,6,7,35,38,39,53,54,55,51,22,29, +1,55,6,7,35,38,39,53,54,55,51,22,21,31,1,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,23,6,7,35,38,61,1,54,55,51,22,23,21,39,6,7,35,38,39,53,54,55,51,22, +23,21,53,6,7,35,38,39,53,54,55,51,22,29,1,1,207,254,96,20,13,13,1,1,13,13,20,1,160,20,14,14, +14,13,21,254,160,1,7,48,7,1,1,7,47,8,1,1,7,48,7,1,1,7,47,8,1,1,7,48,7,1,1,7, +47,8,1,240,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,112,1,7,47,7,1,7,47, +7,1,1,1,7,47,7,1,1,7,47,7,1,1,7,47,7,1,1,6,47,8,1,160,1,13,14,20,254,160,20,14, +13,1,1,13,14,20,1,96,20,14,13,1,254,136,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48,7,1, +1,7,48,128,7,1,1,7,48,7,1,1,7,48,248,15,1,1,15,96,15,1,1,15,96,192,15,1,1,15,96,15, +1,1,15,96,200,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48,7,1,1,7,48,128,7,1,1,7,48, +7,1,1,7,48,0,0,0,0,5,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,36,0,41,0,0,1,22, +23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,21,35,21,51,53,21,35,21,51,53,39,53, +35,21,51,7,51,53,35,21,1,192,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,160,160, +160,160,224,160,160,160,160,160,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,128, +128,192,128,128,64,128,128,192,128,128,0,0,0,10,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,36,0,41, +0,46,0,51,0,56,0,61,0,66,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54, +55,33,5,35,21,51,53,23,51,53,35,21,55,35,21,51,53,5,51,53,35,21,55,35,21,51,53,23,51,53,35,21, +7,35,21,51,53,23,51,53,35,21,55,35,21,51,53,1,192,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1, +18,18,27,1,128,254,216,88,88,56,88,88,240,88,88,254,128,88,88,232,88,88,64,88,88,208,88,88,56,88,88,240, +88,88,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,64,64,64,64,64,64,64, +64,192,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,7,0,0,255,224,2,0,1,160,0,21, +0,26,0,31,0,36,0,41,0,46,0,51,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,23,51,53,35,21,37,33,21,33,53,5,51,53,35,21,37,33,21,33,53,5,51,53,35,21,37,33,21, +33,53,0,1,18,18,27,1,128,27,18,18,1,1,18,18,27,254,128,27,18,18,1,64,64,64,1,128,255,0,1,0, +254,128,64,64,1,128,255,0,1,0,254,128,64,64,1,128,255,0,1,0,1,96,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,64,64,64,64,64,64,192,64,64,64,64,64,192,64,64,64,64,64,0,1,0,0, +0,32,1,192,1,96,0,26,0,0,1,22,21,49,20,7,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,55, +54,51,50,23,49,1,183,9,9,255,0,10,13,13,10,128,9,9,10,13,13,10,104,234,10,13,13,10,1,87,10,13, +13,10,255,0,9,9,128,10,13,13,10,9,9,106,234,9,9,0,0,0,0,1,0,0,0,32,1,64,1,96,0,41, +0,0,37,22,21,49,20,7,6,35,34,47,1,7,6,35,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31, +1,55,54,51,50,23,22,21,20,15,1,23,1,55,9,9,10,13,13,10,105,105,10,13,13,10,9,9,106,106,9,9, +10,13,13,10,105,105,10,13,13,10,9,9,106,106,87,10,13,13,10,9,9,106,106,9,9,10,13,13,10,105,105,10, +13,13,10,9,9,106,106,9,9,10,13,13,10,105,105,0,0,2,0,0,255,192,2,0,1,191,0,28,0,55,0,0, +37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55,23,22,51,50,55,54,53,52,47,1,35,21, +6,7,38,39,53,35,38,39,54,55,51,53,54,55,50,23,22,29,1,51,22,23,6,7,1,244,119,42,9,11,49,49, +70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16,12,12,12,212,57,2,21,22,2,57,21,2,2,21,57, +2,21,10,7,7,56,23,2,2,22,4,120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12, +12,12,16,16,12,212,56,22,2,2,22,56,2,22,22,2,56,22,2,7,7,10,56,2,22,22,2,0,0,2,0,0, +255,192,2,0,1,191,0,28,0,39,0,0,37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55, +23,22,51,50,55,54,53,52,47,1,35,38,39,54,55,51,22,23,6,7,1,244,119,42,9,11,49,49,70,69,56,55, +31,30,8,10,49,48,70,83,62,120,12,16,16,12,12,12,212,161,21,2,2,21,160,23,2,2,22,4,120,62,83,70, +48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,12,16,16,12,212,2,22,22,2,2,22,22,2,0, +0,2,0,16,255,208,1,240,1,192,0,19,0,73,0,0,37,20,7,49,6,35,34,39,38,61,1,52,55,54,51,50, +23,22,29,1,35,22,23,49,22,23,54,55,54,55,52,39,38,39,38,39,38,55,54,55,54,23,22,23,22,21,6,7, +6,7,6,7,38,39,38,39,38,39,52,55,54,55,54,23,22,23,22,7,6,7,6,7,6,21,1,32,9,9,14,14, +9,9,9,9,14,14,9,9,208,2,50,49,75,75,49,50,2,17,17,29,11,1,1,8,9,13,13,10,40,24,23,1, +32,32,54,54,67,67,54,54,32,32,1,23,24,40,10,13,13,9,8,1,1,10,30,17,17,192,14,9,9,9,9,14, +224,14,9,9,9,9,14,224,75,49,50,2,2,50,49,75,41,35,35,24,9,13,13,10,11,1,1,8,34,47,48,55, +68,54,54,32,32,1,1,32,32,54,54,68,55,48,47,34,8,1,1,11,10,13,13,9,24,35,35,41,0,5,0,0, +255,192,2,64,1,192,0,19,0,39,0,59,0,79,0,99,0,0,1,34,7,49,6,21,17,20,23,22,51,50,55,54, +53,17,52,39,38,35,1,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,7,34,7,49,6,29, +1,20,23,22,51,50,55,54,61,1,52,39,38,35,1,34,7,49,6,21,17,20,23,22,51,50,55,54,53,17,52,39, +38,35,7,34,7,49,6,21,17,20,23,22,51,50,55,54,53,17,52,39,38,35,2,32,14,9,9,9,9,14,14,9, +9,9,9,14,254,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,13,13,10,10,9,9,14,1, +128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,9,9,13,254, +63,14,9,9,9,9,13,1,194,13,9,9,254,224,9,9,13,160,14,10,9,9,9,13,162,13,9,9,96,9,9,13, +64,14,10,9,9,9,14,65,13,9,9,1,32,9,9,13,254,159,14,9,9,9,9,13,1,98,13,9,9,96,9,9, +13,255,0,14,10,9,9,9,13,1,2,13,9,9,0,0,0,2,0,14,255,192,1,241,1,192,0,81,0,99,0,0, +1,22,15,1,22,21,20,7,23,22,7,6,15,1,6,7,6,47,1,6,15,1,6,7,6,35,34,39,38,47,1,38, +39,7,6,39,38,47,1,38,39,38,63,1,38,53,52,55,39,38,55,54,63,1,54,55,54,31,1,54,63,1,54,55, +54,51,50,23,22,31,1,22,23,55,54,23,22,31,1,22,23,49,7,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,1,240,4,10,44,2,2,44,10,4,7,9,4,10,13,10,14,56,21,23,12,4,14,21,23,21,20,15, +4,12,24,20,56,14,10,13,9,5,9,7,4,10,44,2,2,44,10,4,7,9,5,9,13,10,14,56,20,24,12,4, +15,20,22,22,21,14,4,12,23,21,56,14,10,13,10,4,9,7,240,34,23,22,1,1,22,23,34,34,23,22,1,1, +22,23,34,1,25,14,10,40,12,13,13,12,40,10,14,18,17,8,16,15,11,4,18,16,10,57,14,4,3,3,4,14, +57,10,16,18,4,11,15,16,8,17,18,14,10,40,12,13,13,12,40,10,14,18,17,8,16,15,11,4,18,16,10,57, +14,3,4,4,3,14,57,10,16,18,4,11,15,16,8,17,18,169,1,23,22,35,33,23,23,1,1,23,23,33,35,22, +23,1,0,0,0,1,0,0,255,192,2,64,1,192,0,75,0,0,37,6,7,49,6,7,35,23,6,29,1,20,7,6, +43,1,34,49,38,7,38,7,34,49,35,34,39,38,61,1,52,39,38,43,1,34,7,6,29,1,20,7,6,43,1,34, +35,48,49,34,43,1,34,39,38,61,1,52,61,1,35,38,39,38,53,52,55,37,54,23,50,31,1,22,7,49,2,64, +1,9,9,13,32,1,1,12,11,17,16,1,1,1,2,1,1,57,17,11,12,9,9,14,64,14,9,9,12,11,17,56, +2,2,2,2,16,17,11,12,32,14,9,9,10,1,0,11,11,12,10,255,12,1,192,13,9,9,1,160,4,4,16,17, +11,12,1,1,1,1,12,11,17,88,14,9,9,9,9,14,88,17,11,12,12,11,17,112,1,2,69,1,9,9,13,14, +10,224,9,1,7,225,10,14,0,2,0,0,255,192,2,0,1,192,0,26,0,43,0,0,5,38,39,49,38,39,49,38, +39,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6,7,6,7,3,20,31,1,22,55,54,47,1,53,38,39,34, +7,6,21,23,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,24,11, +96,19,13,12,18,85,2,23,10,7,7,1,64,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,0,13,6,64,12,18,19,14,57,123,22,2,7,7,10,136,0,0,0,2,0,0,255,224,2,64, +1,160,0,47,0,67,0,0,1,20,23,49,22,51,50,55,54,61,1,51,50,23,22,23,19,22,21,6,7,6,7,35, +53,52,39,38,35,34,7,6,29,1,35,38,39,38,39,52,55,19,54,55,54,59,1,31,1,52,39,49,38,35,34,7, +6,29,1,20,23,22,51,50,55,54,61,1,1,0,9,9,14,14,9,9,75,20,17,16,7,118,3,1,15,15,24,201, +9,9,14,14,9,9,201,24,15,15,1,3,118,7,16,16,21,74,1,64,9,9,14,14,9,9,9,9,14,14,9,9, +1,96,14,9,9,9,9,14,64,12,11,20,254,180,9,9,24,15,15,1,64,14,9,9,9,9,14,64,1,15,15,24, +9,9,1,76,20,11,12,64,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,3,0,0,255,192,2,0, +1,192,0,27,0,36,0,71,0,0,37,35,7,6,35,34,47,1,35,34,7,6,29,1,20,23,22,51,33,50,55,54, +61,1,52,39,38,35,7,38,39,54,55,22,23,6,7,39,22,51,50,63,1,54,53,52,39,38,35,34,15,1,53,52, +39,38,35,34,7,6,29,1,39,38,35,34,7,6,21,20,31,1,1,224,133,46,19,26,26,19,45,134,14,9,9,9, +9,14,1,192,14,9,9,9,9,14,48,22,2,2,22,22,2,2,22,199,10,13,13,10,128,9,9,10,13,13,10,73, +9,9,14,14,9,9,73,10,13,13,10,9,9,128,96,45,19,19,45,9,9,14,96,14,9,9,9,9,14,96,14,9, +9,104,2,22,22,2,2,22,22,2,81,9,9,128,10,13,13,10,9,9,74,243,14,9,9,9,9,14,243,74,9,9, +10,13,13,10,128,0,0,0,0,2,0,0,255,224,2,0,1,161,0,22,0,31,0,0,1,38,39,33,6,15,1,6, +29,1,22,23,22,23,33,54,55,54,55,53,52,47,1,3,35,39,35,55,33,23,35,7,1,191,7,24,254,192,24,7, +61,4,1,13,14,20,1,160,20,14,13,1,4,61,95,192,32,55,48,1,14,48,55,32,1,136,23,2,2,22,250,15, +16,96,20,14,13,1,1,13,14,20,96,16,15,249,254,216,64,192,192,64,0,1,0,32,255,224,1,240,1,176,0,64, +0,0,1,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,38,39,38,35,6,7,6,7,22,23,22,23,50,55, +54,23,22,23,22,7,6,7,6,7,38,39,38,39,38,39,54,55,54,55,54,55,50,23,22,23,53,52,55,54,51,50, +23,22,21,1,240,9,9,14,144,14,9,9,9,9,14,63,23,33,33,38,68,45,45,2,2,45,45,68,53,43,11,12, +13,8,8,1,2,11,60,74,63,50,50,30,30,1,1,30,30,50,50,63,52,46,46,32,9,9,14,14,9,9,1,144, +144,14,9,9,9,9,14,14,9,9,30,17,17,2,45,45,68,68,45,45,2,32,8,2,2,10,11,13,13,8,44,1, +1,30,30,50,51,62,62,51,50,30,30,1,23,23,40,70,14,9,9,9,9,14,0,0,0,2,0,16,255,208,1,240, +1,176,0,49,0,99,0,0,1,34,7,49,6,29,1,38,39,38,35,6,7,6,7,6,23,22,23,22,55,54,55,54, +55,54,55,50,23,22,23,35,34,7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38,35,3,38,7,49,6,7, +6,7,6,7,34,39,38,39,51,50,55,54,53,52,39,38,43,1,34,7,6,29,1,20,23,22,51,50,55,54,61,1, +22,23,22,51,54,55,54,55,54,39,38,39,1,208,14,9,9,30,46,46,54,72,56,55,23,4,6,5,13,13,12,11, +4,17,39,39,51,38,33,32,21,44,14,9,9,9,9,14,128,14,9,9,9,9,14,22,13,12,11,4,17,39,39,51, +38,33,32,21,44,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,31,45,46,53,72,56,55,24,4,6,5, +13,1,176,9,9,14,74,42,24,24,1,40,41,68,13,12,11,4,4,5,6,13,48,29,28,1,17,17,30,9,9,14, +14,9,9,9,9,14,144,14,9,9,254,238,4,6,5,13,48,29,28,1,17,17,30,9,9,14,14,9,9,9,9,14, +144,14,9,9,9,9,14,74,42,24,24,1,40,41,68,13,12,12,3,0,0,7,0,0,255,224,2,64,1,160,0,21, +0,39,0,57,0,75,0,86,0,97,0,108,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,23,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,61,1,52,39,49,38,35,34,7,6,21, +20,23,22,51,50,55,54,53,21,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53,55,6,7,22,23,51, +54,55,38,39,35,21,6,7,22,23,51,54,55,38,39,35,21,6,7,22,23,51,54,55,38,39,35,0,1,18,18,27, +1,192,27,18,18,1,1,18,18,27,254,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14, +14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,64,22,2,2,22,224,22,2,2,22,224, +22,2,2,22,224,22,2,2,22,224,22,2,2,22,224,22,2,2,22,224,1,96,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,160,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,216,2,22,22,2,2,22,22,2,96,2,22,22,2,2, +22,22,2,96,2,22,22,2,2,22,22,2,0,2,0,0,255,192,1,192,1,192,0,31,0,43,0,0,19,53,54,55, +54,55,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,59,2,53,38,39, +38,39,6,7,6,7,21,80,2,40,41,61,61,41,40,2,16,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,16,64,160,1,22,23,34,34,23,22,1,1,0,48,61,41,40,2,2,40,41,61,48,1,18,18,27,192,27, +18,18,1,1,18,18,27,192,27,18,18,1,48,34,23,22,1,1,22,23,34,48,0,0,0,2,0,0,255,192,2,0, +1,192,0,15,0,42,0,0,23,6,7,35,38,39,17,52,55,54,51,50,23,22,21,17,1,34,7,6,39,38,39,38, +39,34,7,17,54,51,22,23,22,23,22,55,54,55,17,52,39,38,35,64,1,15,32,15,1,9,9,14,14,9,9,1, +156,9,10,67,41,42,34,36,52,36,53,48,37,54,45,46,53,48,64,20,1,11,10,15,48,15,1,1,15,1,208,14, +9,9,9,9,14,254,48,1,240,4,30,2,2,13,14,3,16,254,162,14,2,14,14,2,1,24,9,20,1,45,15,8, +8,0,0,0,0,1,0,0,255,224,2,0,1,160,0,54,0,0,37,21,6,7,6,7,38,39,38,39,53,54,55,54, +55,50,23,38,39,38,39,6,7,6,7,54,51,22,23,22,23,21,6,7,6,7,38,39,38,47,1,54,55,54,55,54, +55,22,23,22,23,22,21,20,51,2,0,1,23,22,34,20,14,13,1,1,13,14,20,16,14,11,57,57,81,81,57,57, +11,14,16,20,14,13,1,1,13,14,20,34,22,22,1,1,1,34,34,58,58,71,71,58,57,34,35,1,160,112,34,23, +22,1,1,13,14,20,128,20,14,13,1,7,80,50,51,2,2,51,50,80,7,1,13,14,20,128,20,14,13,1,1,22, +23,34,112,71,58,58,34,34,1,1,34,34,58,57,71,1,0,1,0,0,255,224,1,64,1,159,0,24,0,0,1,17, +6,7,6,35,34,47,1,35,38,39,38,39,53,54,55,54,59,1,55,54,23,22,23,1,64,1,18,7,6,12,9,135, +84,20,14,13,1,1,13,14,20,84,135,15,19,18,1,1,128,254,129,20,9,4,8,120,1,13,13,20,97,20,13,14, +120,13,8,7,21,0,0,0,0,2,0,0,255,224,1,192,1,160,0,18,0,43,0,0,1,38,7,6,23,22,21,20, +7,6,23,22,51,50,55,54,55,38,47,1,38,15,1,35,6,7,6,7,21,22,23,22,59,1,23,22,55,50,55,54, +55,17,38,39,1,157,19,15,12,15,18,18,16,13,7,11,9,7,34,1,1,34,112,19,15,135,84,20,14,13,1,1, +13,14,20,84,135,9,12,7,6,18,1,1,18,1,10,12,15,19,15,15,22,22,15,15,19,8,5,29,45,45,29,147, +8,13,120,1,13,13,20,95,21,13,13,120,12,1,3,9,20,1,128,21,8,0,0,0,0,4,0,0,255,220,2,128, +1,164,0,18,0,41,0,68,0,93,0,0,1,38,7,6,23,22,21,20,7,6,23,22,51,50,55,54,55,38,39,55, +38,7,6,23,22,23,22,21,6,7,6,23,22,51,50,55,54,55,54,53,38,39,55,38,7,6,23,22,23,22,21,20, +7,6,7,6,23,22,51,50,55,54,55,54,53,52,39,38,39,7,38,15,1,35,6,7,6,7,21,22,23,22,23,51, +23,22,51,50,55,54,55,17,38,39,1,157,19,15,12,15,18,18,16,13,7,11,9,7,34,1,1,34,60,18,16,12, +16,25,14,14,1,52,16,12,8,11,8,7,34,18,19,2,69,61,18,15,13,16,42,23,23,23,23,42,16,13,7,11, +8,7,51,27,28,28,27,51,233,19,15,135,84,20,14,13,1,1,13,14,20,84,135,9,12,7,6,18,1,1,18,1, +10,12,15,19,15,15,21,22,15,15,19,8,5,28,46,45,28,74,12,16,18,15,21,29,28,32,65,46,15,19,8,5, +28,38,38,44,89,58,75,12,16,18,15,35,48,48,54,54,48,49,35,15,18,10,5,42,58,58,66,66,57,57,42,2, +8,13,120,1,13,14,20,96,20,14,13,1,120,8,3,9,20,1,128,20,9,0,0,0,0,9,0,0,255,224,1,192, +1,160,0,21,0,26,0,48,0,53,0,75,0,80,0,85,0,90,0,103,0,0,19,22,23,49,22,23,21,6,7,6, +7,35,38,39,38,39,53,54,55,54,55,51,7,35,21,51,53,23,22,23,49,22,23,21,6,7,6,7,35,38,39,38, +39,53,54,55,54,55,51,7,35,21,51,53,19,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38, +39,53,23,51,53,35,21,19,51,21,35,53,23,35,53,51,21,39,51,21,35,53,35,21,35,53,51,21,51,53,144,20, +14,13,1,1,13,14,20,96,20,14,13,1,1,13,14,20,96,16,64,64,16,20,14,13,1,1,13,14,20,96,20,14, +13,1,1,13,14,20,96,16,64,64,128,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,64,64,64, +32,32,32,96,32,32,32,32,96,32,64,96,64,1,160,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13, +1,64,64,64,192,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,64,64,64,1,16,20,14,13,1, +1,13,14,20,96,20,14,13,1,1,13,14,20,96,80,64,64,254,224,32,32,32,32,32,192,128,32,96,192,32,32,0, +0,6,0,0,255,224,2,0,1,160,0,12,0,23,0,36,0,49,0,62,0,73,0,0,19,22,23,17,6,7,35,38, +39,17,54,55,51,23,17,6,7,38,39,17,54,55,22,23,55,22,23,17,6,7,35,38,39,17,54,55,59,1,22,23, +17,6,7,35,38,39,17,54,55,51,23,54,55,51,22,23,17,6,7,35,38,39,17,39,54,55,22,23,17,6,7,38, +39,17,40,22,2,2,22,16,22,2,2,22,16,88,1,15,15,1,1,15,15,1,72,22,2,2,22,16,22,2,2,22, +16,96,22,2,2,22,16,22,2,2,22,16,152,2,22,16,22,2,2,22,16,22,2,64,1,15,15,1,1,15,15,1, +1,160,2,22,254,112,22,2,2,22,1,144,22,2,16,254,96,15,1,1,15,1,160,15,1,1,15,16,2,22,254,112, +22,2,2,22,1,144,22,2,2,22,254,112,22,2,2,22,1,144,22,2,24,22,2,2,22,254,112,22,2,2,22,1, +144,8,15,1,1,15,254,96,15,1,1,15,1,160,0,0,0,2,0,0,255,235,1,181,1,160,0,22,0,40,0,0, +19,51,50,31,1,22,21,20,15,1,6,35,34,47,1,38,61,1,54,55,54,55,49,23,50,55,49,54,53,52,39,38, +35,34,7,6,21,20,23,22,51,48,150,26,19,176,18,18,134,19,26,26,19,176,19,1,13,14,20,64,14,9,9,9, +9,14,14,9,9,9,9,14,1,160,19,176,19,26,26,19,134,18,18,176,19,26,150,20,14,13,1,144,9,9,14,14, +9,9,9,9,14,14,9,9,0,3,0,0,255,224,2,0,1,160,0,21,0,44,0,62,0,0,1,22,21,49,20,15, +1,6,39,38,63,1,54,53,52,47,1,38,55,54,31,1,5,53,54,55,54,55,51,50,31,1,22,21,20,15,1,6, +35,34,47,1,38,53,49,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,217,39,39,112,17,17, +14,14,112,25,25,128,14,14,17,16,129,254,39,1,13,14,20,150,26,19,168,18,18,134,19,26,26,19,168,19,112,14, +9,9,9,9,14,14,9,9,9,9,14,1,24,42,54,54,42,113,14,14,17,17,113,27,35,35,27,129,17,17,14,14, +129,62,150,20,14,13,1,19,168,19,26,26,19,134,18,18,168,19,26,118,9,9,14,14,9,9,9,9,14,14,9,9, +0,4,0,0,255,192,1,192,1,192,0,25,0,36,0,47,0,59,0,0,37,17,38,39,38,39,33,6,7,6,7,17, +22,23,22,23,33,50,55,54,53,38,39,53,54,55,37,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6,7,35, +38,39,54,55,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27,1,1,27,27,41, +1,64,14,9,9,1,15,15,1,254,207,192,16,1,1,15,193,13,2,2,13,192,16,1,1,15,193,13,2,2,13,241, +254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9, +82,14,22,208,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,255,0,9,9,14,14,9,9,64,0,0, +0,1,0,0,255,192,1,128,1,192,0,21,0,0,19,33,22,23,22,23,17,6,7,34,47,1,7,6,35,38,39,17, +54,55,54,55,48,1,32,20,14,13,1,2,22,8,6,154,154,6,8,22,2,1,13,14,20,1,192,1,13,14,20,254, +72,22,2,4,108,108,4,2,22,1,184,20,14,13,1,0,0,4,0,0,255,192,2,0,1,192,0,32,0,37,0,46, +0,65,0,0,1,33,6,7,6,7,21,20,23,22,59,1,21,20,23,22,51,33,50,55,54,61,1,51,50,55,54,61, +1,38,39,38,39,3,33,53,33,21,55,38,39,54,55,22,23,6,7,37,51,23,21,51,53,52,47,1,38,35,33,34, +7,6,29,1,51,53,1,192,254,128,27,18,18,1,9,9,14,32,9,9,14,1,64,14,9,9,32,14,9,9,1,18, +18,27,64,255,0,1,0,48,22,2,2,22,22,2,2,22,254,208,230,26,64,9,46,9,13,254,237,14,9,9,64,1, +0,1,18,18,27,96,14,9,9,96,14,9,9,9,9,14,96,9,9,14,96,27,18,18,1,255,0,96,96,152,2,22, +22,2,2,22,22,2,232,27,69,83,13,9,46,9,9,9,14,128,96,0,0,2,0,0,255,224,2,0,1,160,0,29, +0,47,0,0,19,51,22,31,1,51,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,55,54, +55,49,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,195,122,34,12,10,75,27,18,18,1,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,75,10,12,34,61,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27, +41,1,160,2,31,31,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,31,31,2,254,160,1, +27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,2,0,0,255,224,1,192,1,160,0,47,0,51,0,0, +37,35,3,38,39,6,7,3,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,43,1,55,51,23,49,34, +7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,55,23,35,1,160,26,137,8,22,21,9,135,26,14,9, +9,9,9,14,96,14,9,9,9,9,14,2,17,160,17,14,9,9,9,9,14,96,14,9,9,9,9,14,248,56,56,112, +32,1,107,20,1,1,20,254,149,9,9,14,14,9,9,9,9,14,14,9,9,48,48,9,9,14,14,9,9,9,9,14, +14,9,9,112,149,149,0,0,0,3,0,0,255,224,1,128,1,160,0,35,0,47,0,59,0,0,37,54,55,38,39,38, +39,35,34,7,6,21,20,23,22,59,1,17,35,34,7,6,21,20,23,22,59,1,54,55,54,55,52,39,38,47,1,51, +22,23,22,23,6,7,6,7,35,53,19,35,53,51,22,23,22,23,6,7,6,7,1,65,30,1,1,37,36,54,192,14, +9,9,9,9,14,16,16,14,9,9,9,9,14,224,54,36,37,1,17,17,29,209,112,27,18,18,1,1,18,18,27,112, +144,144,144,27,18,18,1,1,18,18,27,206,34,48,54,36,37,1,9,9,14,14,9,9,254,192,9,9,14,14,9,9, +1,37,36,54,35,29,28,18,146,1,18,18,27,27,18,18,1,128,254,192,128,1,18,18,26,27,18,19,1,0,0,0, +0,1,0,0,255,224,1,128,1,160,0,41,0,0,1,20,7,49,6,43,1,3,51,50,23,22,21,20,7,6,43,1, +34,39,38,53,52,55,54,59,1,19,35,34,39,38,53,52,55,54,59,1,50,23,22,21,1,128,9,9,14,59,133,64, +14,9,9,9,9,14,192,14,9,9,9,9,14,59,133,64,14,9,9,9,9,14,192,14,9,9,1,128,14,9,9,254, +192,9,9,14,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,0,2,0,0,255,224,2,64, +1,160,0,52,0,103,0,0,1,33,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,17,35,34,7,6,21,20, +23,22,59,1,50,55,54,53,52,39,38,43,1,17,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,19,7,53, +23,22,51,50,55,54,53,52,47,1,38,35,34,15,1,6,21,20,23,22,51,50,63,1,21,39,38,35,34,7,6,21, +20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,1,32,255,0,14,9,9,9,9,14,14,9,9,64,32,14, +9,9,9,9,14,128,14,9,9,9,9,14,32,64,9,9,14,14,9,9,9,9,14,233,9,9,10,13,13,10,9,9, +64,10,13,13,10,64,9,9,10,13,13,10,9,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10, +1,160,9,9,14,64,14,9,9,9,9,14,32,254,192,9,9,14,14,9,9,9,9,14,14,9,9,1,64,32,14,9, +9,9,9,14,64,14,9,9,254,183,10,230,10,9,9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,10,230,10, +9,9,10,13,13,10,64,9,9,64,10,13,13,10,9,9,0,2,0,0,255,224,1,192,1,160,0,52,0,104,0,0, +1,33,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,21,35,34,7,6,21,20,23,22,59,1,50,55,54,53, +52,39,38,43,1,53,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,3,38,35,49,34,7,6,21,20,31,1, +35,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47,1,51,7,6,21,20,23,22, +51,50,63,1,54,53,52,47,1,1,160,254,128,14,9,9,9,9,14,14,9,9,128,16,14,9,9,9,9,14,96,14, +9,9,9,9,14,16,128,9,9,14,14,9,9,9,9,14,41,10,13,13,10,9,9,10,230,10,9,9,10,13,13,10, +64,9,9,64,10,13,13,10,9,9,10,230,10,9,9,10,13,13,10,64,9,9,64,1,160,9,9,14,63,14,9,9, +9,9,14,32,128,9,9,13,13,10,9,9,9,14,13,9,9,128,32,14,9,9,9,9,14,63,14,9,9,254,247,9, +9,10,13,13,10,9,9,10,13,13,10,9,9,64,10,13,13,10,64,9,9,10,13,13,10,9,9,10,13,13,10,9, +9,64,10,13,13,10,64,0,0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39, +38,53,52,55,54,59,1,50,23,22,21,20,7,6,35,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7, +6,35,37,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51, +33,50,23,22,21,20,7,6,35,1,0,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14, +224,14,9,9,9,9,14,255,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9, +9,9,14,1,128,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9, +9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14, +9,9,0,0,0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39,38,53,52,55, +54,59,1,50,23,22,21,20,7,6,35,23,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,5,52, +55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,37,35,34,39,38,53,52,55,54,59,1,50,23,22, +21,20,7,6,35,1,64,192,14,9,9,9,9,14,192,14,9,9,9,9,14,96,254,128,14,9,9,9,9,14,1,128, +14,9,9,9,9,14,254,96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,64,192,14,9,9,9,9, +14,192,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14, +14,9,9,224,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,4,0,0,255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,35,34,39,38,53,52,55,54,59,1,50, +23,22,21,20,7,6,35,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,35,37,52,55,49,54,51, +33,50,23,22,21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6, +35,1,160,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,254, +96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9,9,9,14,1,128,14,9,9, +9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,4,0,0, +255,224,1,192,1,160,0,18,0,37,0,57,0,76,0,0,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20, +7,6,35,17,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,37,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,1,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,1,160,254, +128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254, +96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160,254,128,14,9,9,9,9,14,1,128,14,9,9, +9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,255,0,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,254,224,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,6,0,16, +255,240,2,0,1,144,0,12,0,32,0,52,0,72,0,85,0,98,0,0,19,22,23,21,6,7,35,38,39,53,54,55, +51,5,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33, +34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,37,54,55, +51,22,23,21,6,7,35,38,39,53,23,22,23,21,6,7,35,38,39,53,54,55,51,88,22,2,2,22,48,22,2,2, +22,48,1,136,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9, +9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,254,48,2,22,48,22,2,2,22,48,22,2, +72,22,2,2,22,48,22,2,2,22,48,1,144,2,22,48,22,2,2,22,48,22,2,16,9,9,14,14,9,9,9,9, +14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,152,22, +2,2,22,48,22,2,2,22,48,136,2,22,48,22,2,2,22,48,22,2,0,5,0,26,255,224,1,224,1,160,0,20, +0,40,0,60,0,81,0,95,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,49,23, +52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49,22,21,20,7,6,43,1,34,39, +38,53,52,55,54,59,1,5,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,49,53,38,63,1, +54,23,22,23,21,6,7,6,47,1,32,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,192,9,9,14,192, +14,9,9,9,9,14,192,14,9,9,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192,254,96,9,9,14,1,128, +14,9,9,9,9,14,254,128,14,9,9,12,12,102,9,8,8,1,1,8,8,9,102,1,128,14,9,9,9,9,14,14, +9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9,9,14,14,9,9,160, +14,9,9,9,9,14,14,9,9,9,9,14,179,13,13,79,6,4,4,11,158,11,4,4,6,79,0,0,0,5,0,0, +255,224,1,192,1,160,0,19,0,39,0,59,0,79,0,94,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6, +35,33,34,39,38,53,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49,22,21, +20,7,6,43,1,34,39,38,53,52,55,54,59,1,5,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39, +38,53,55,6,39,49,38,39,53,54,55,54,31,1,22,15,1,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14, +9,9,192,9,9,14,192,14,9,9,9,9,14,192,14,9,9,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192, +254,96,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,26,9,8,8,1,1,8,8,9,102,11,11,102,1, +128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9, +9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,100,6,4,4,11,158,11,4,4,6,79,13, +13,79,0,0,0,2,0,0,0,0,2,64,1,128,0,20,0,33,0,0,1,17,6,7,6,7,33,38,39,38,39,17, +54,55,54,55,33,22,23,22,31,1,17,6,7,6,47,1,53,55,54,23,22,23,1,128,1,13,14,20,254,224,20,14, +13,1,1,13,14,20,1,32,20,14,13,1,192,1,16,16,17,110,110,17,16,16,1,1,80,254,224,20,14,13,1,1, +13,14,20,1,32,20,14,13,1,1,13,14,20,16,255,0,20,8,9,11,75,158,75,11,9,8,20,0,0,3,0,0, +255,224,1,255,1,160,0,20,0,38,0,60,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38, +39,38,39,5,22,23,49,22,21,20,7,6,7,38,39,38,39,54,55,54,55,1,6,35,33,34,39,38,63,1,54,51, +50,31,1,55,54,51,50,31,1,22,7,1,191,254,128,26,18,18,1,1,18,18,26,1,128,27,18,18,1,1,17,18, +28,254,176,20,14,14,14,13,21,21,13,13,1,1,13,14,20,1,79,5,9,254,162,10,4,4,5,70,5,8,8,5, +32,94,5,8,8,5,128,5,4,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,200,8,9,8,8,96,7,7,44,139,8,7,192,8,9, +0,1,0,0,255,193,1,128,1,192,0,27,0,0,1,6,7,49,6,7,49,6,7,6,35,34,39,38,39,38,39,38, +39,54,55,54,55,22,23,22,23,49,1,128,2,30,31,39,39,27,10,14,14,10,27,40,39,30,30,2,2,54,54,82, +82,54,54,2,1,0,45,59,59,55,56,33,12,12,33,56,55,59,59,45,82,54,54,2,2,54,54,82,0,2,0,0, +255,192,2,0,1,192,0,26,0,36,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54, +55,22,23,22,23,22,23,37,17,54,55,54,55,38,39,38,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,255,0,82,54,54,2,2,54,54,82,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,254,128,2,54,54,82,82,54,54,2,0,0,0,0,2,0,16, +255,208,1,112,1,186,0,26,0,43,0,0,55,54,55,49,54,55,49,54,55,54,51,50,23,22,23,22,23,22,23,6, +7,6,7,38,39,38,39,51,38,39,6,7,22,23,22,23,54,55,38,39,38,39,38,39,16,1,27,27,35,35,26,10, +15,15,10,26,35,35,27,27,1,2,50,49,75,75,49,50,2,96,1,15,15,1,1,32,31,48,15,1,1,15,34,23, +22,1,129,38,57,56,56,56,37,13,13,37,56,56,56,57,38,76,49,50,2,2,50,49,76,14,2,2,14,48,32,32, +1,1,15,15,1,1,23,22,35,0,0,0,0,3,0,0,255,192,1,251,1,187,0,13,0,28,0,78,0,0,1,22, +21,49,20,15,1,39,55,54,51,50,31,1,5,55,23,7,6,15,1,6,39,38,63,1,54,55,49,55,22,23,49,22, +21,20,7,6,43,1,6,7,6,21,17,20,23,22,51,33,50,55,54,61,1,52,55,54,55,22,23,22,29,1,6,7, +6,7,33,38,39,38,39,17,54,55,54,55,51,1,234,17,17,30,98,30,18,22,22,18,18,254,194,168,98,168,9,13, +88,15,10,10,4,30,4,9,20,14,9,9,9,9,14,96,14,9,9,9,9,14,1,0,14,9,9,9,9,14,14,9, +9,1,27,27,41,255,0,41,27,27,1,1,27,27,41,96,1,152,18,22,22,18,30,98,30,17,17,18,202,168,98,168, +9,4,30,4,11,9,15,88,13,9,179,1,9,9,13,14,9,9,1,9,9,13,254,255,14,9,9,9,9,14,97,13, +9,9,1,1,9,9,13,97,41,27,27,1,1,27,27,41,1,1,41,27,27,1,0,0,0,1,0,0,255,192,2,0, +1,192,0,104,0,0,37,20,15,1,6,35,34,39,38,53,52,63,1,35,21,55,54,51,50,23,22,21,20,15,1,6, +35,34,47,1,38,53,52,55,54,51,50,31,1,53,35,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,54,51, +50,23,22,21,20,15,1,51,53,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,34,47, +1,21,51,39,38,53,52,55,54,51,50,31,1,22,21,2,0,9,72,10,13,14,9,9,9,18,115,17,10,13,14,9, +9,9,72,10,13,13,10,72,9,9,9,14,13,10,17,115,18,9,9,9,14,13,10,72,9,9,72,10,13,14,9,9, +9,18,115,17,10,13,14,9,9,9,72,10,13,13,10,72,9,9,9,14,13,10,17,115,18,9,9,9,14,13,10,72, +9,193,13,10,72,10,10,9,13,13,10,17,115,18,9,10,9,13,13,10,72,9,9,72,10,13,13,9,10,9,18,115, +17,10,13,13,9,10,9,72,10,14,13,9,72,9,10,9,13,13,10,17,115,18,9,10,9,13,13,10,72,9,9,72, +10,13,13,9,10,9,18,115,17,10,13,13,9,10,9,72,10,12,0,0,0,2,0,0,0,0,1,64,1,128,0,19, +0,35,0,0,19,34,7,49,6,21,17,20,23,22,51,54,55,54,53,17,52,39,38,35,23,7,6,21,20,31,1,22, +55,54,55,17,38,39,38,7,31,13,9,9,9,9,14,14,9,9,9,10,14,237,192,12,11,192,17,17,18,1,2,17, +17,16,1,128,9,9,14,254,192,14,9,9,1,9,9,14,1,63,14,9,9,7,160,11,14,14,11,159,12,8,8,21, +1,64,20,8,8,12,0,0,0,1,0,0,0,0,2,0,1,128,0,42,0,0,55,17,52,55,54,51,50,23,22,29, +1,55,54,23,22,23,21,55,54,23,22,23,17,6,7,6,47,1,21,6,7,6,47,1,21,20,7,6,35,34,39,38, +53,0,9,9,13,14,10,9,172,16,17,18,1,172,16,17,18,1,1,18,17,16,172,1,18,17,16,172,9,9,13,14, +10,9,33,1,63,14,8,9,9,8,14,132,157,12,8,8,21,132,157,12,8,8,21,254,192,21,8,8,12,156,131,21, +8,8,12,156,131,13,9,9,9,9,14,0,0,2,0,0,0,0,2,0,1,128,0,12,0,28,0,0,1,7,21,23, +22,55,54,55,17,38,39,38,7,33,7,6,21,20,31,1,22,55,54,55,17,38,39,38,7,1,204,172,172,16,17,18, +1,1,18,17,16,255,0,193,11,11,192,17,17,18,1,2,17,17,16,1,121,143,84,143,12,8,8,22,1,63,21,8, +8,12,160,11,14,14,11,159,12,8,8,21,1,64,20,8,8,12,0,0,0,1,0,0,255,224,1,128,1,160,0,15, +0,0,37,22,23,6,7,5,6,39,38,39,17,54,55,54,23,5,1,105,22,1,1,22,254,224,24,24,24,1,1,24, +24,24,1,32,233,15,26,27,13,176,15,13,14,28,1,96,28,14,13,14,176,0,0,0,0,2,0,0,0,0,1,64, +1,129,0,20,0,41,0,0,1,35,6,7,6,7,17,22,23,22,51,23,54,55,54,55,17,38,39,38,39,43,1,6, +7,6,7,17,22,23,22,59,1,54,55,54,55,17,38,39,38,39,1,16,32,20,14,13,1,1,13,14,20,32,20,14, +13,1,1,13,14,20,192,32,20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,1,129,1,13,13,20,254, +224,21,13,14,2,1,13,14,20,1,32,20,14,14,1,1,13,14,20,254,224,21,14,14,1,13,14,20,1,32,20,14, +14,1,0,0,0,1,0,0,0,1,1,128,1,128,0,20,0,0,1,21,6,7,6,7,33,38,39,38,39,53,54,55, +54,55,33,22,23,22,23,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,1,64,255, +27,18,18,1,1,18,18,27,255,27,18,18,1,1,18,18,27,0,0,0,0,2,0,0,0,0,2,0,1,128,0,12, +0,28,0,0,63,1,53,39,38,7,6,7,17,22,23,22,55,33,55,54,53,52,47,1,38,7,6,7,17,22,23,22, +55,53,171,171,17,17,18,1,1,18,17,17,1,0,192,11,11,192,17,17,18,1,1,18,17,17,7,143,84,143,12,8, +8,21,254,192,21,8,8,12,159,11,14,14,11,159,12,8,8,21,254,192,20,7,8,12,0,1,0,0,0,0,2,0, +1,128,0,42,0,0,1,17,20,7,6,35,34,39,38,61,1,7,6,39,38,39,53,7,6,39,38,39,17,54,55,54, +31,1,53,54,55,54,31,1,53,52,55,54,51,50,23,22,21,2,0,9,9,13,14,10,9,171,17,17,18,1,171,17, +17,18,1,1,18,17,17,171,1,18,17,17,171,9,9,13,14,10,9,1,96,254,192,13,9,9,9,9,14,131,157,12, +8,8,22,131,157,12,8,8,22,1,63,21,8,8,12,156,131,21,8,8,12,156,131,14,8,9,9,8,14,0,0,0, +0,2,0,0,0,0,1,62,1,128,0,19,0,35,0,0,37,50,55,49,54,53,17,52,39,38,35,34,7,6,21,17, +22,23,22,51,39,55,54,53,52,47,1,38,7,6,7,17,22,23,22,55,1,31,14,8,9,9,9,14,13,9,9,1, +9,9,13,234,192,11,11,192,17,17,18,1,1,18,17,17,1,9,9,14,1,63,14,9,9,9,9,13,254,192,14,9, +9,6,159,11,14,14,11,159,13,7,8,21,254,192,21,8,8,12,0,0,0,2,0,0,255,224,1,191,1,161,0,15, +0,34,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23,22,23,5,33,6,7,6,7,22,23,22,23,33,54, +55,54,53,52,39,38,39,48,1,95,32,12,12,21,175,15,20,20,15,176,21,12,12,32,1,95,254,161,20,14,13,1, +1,13,14,20,1,95,20,14,14,14,13,21,129,2,27,26,25,192,16,16,193,25,26,26,2,65,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,0,0,0,1,0,0,255,224,1,0,1,160,0,24,0,0,23,34,47,1,38,53, +52,63,1,54,51,50,23,22,21,20,15,1,23,22,21,20,7,6,35,224,13,10,192,9,9,192,10,13,13,10,9,9, +170,170,9,9,10,13,32,9,192,10,13,13,10,192,9,9,10,13,13,10,169,169,10,13,13,10,9,0,0,1,0,64, +255,224,1,64,1,160,0,24,0,0,23,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,22,21,20,15, +1,6,35,96,13,10,9,9,170,170,9,9,10,13,13,10,192,9,9,192,10,13,32,9,10,13,13,10,169,169,10,13, +13,10,9,9,192,10,13,13,10,192,9,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,53,51,54,55,38,39, +35,53,38,39,6,7,21,35,6,7,22,23,51,21,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,0,22,2,64,22,2,2,22,64,2,22,22,2,64,22,2,2,22,64,2,22,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,2,22,64,2,22,22,2, +64,22,2,2,22,64,2,22,22,2,64,22,2,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,37,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,6,7,22,23, +51,54,55,38,39,35,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,168, +22,2,2,22,176,22,2,2,22,176,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,24,2,22,22,2,2,22,22,2,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,23,7,6,23,22,63,1,23, +22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,175,47,47,14,14,17,16,47,48,17,16,15,15,46,46,15,15,16,17,48,47,16, +17,14,14,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,48,47,48,17, +16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,26,0,52,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,37,54,53,49,52,39,38,35,34,15,1,39,38,35,34,7,6,21,20,31,1,22,51,50,63,1,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,116,8,8,9,11,11,9,108,44, +9,11,11,9,8,8,64,9,11,11,9,128,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,44,9,11,11,9,8,8,108,44,8,8,9,11,11,9,64,8,8,128,0,3,0,0,255,192,2,0, +1,192,0,26,0,42,0,75,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,17,34,39,49,38,53,54,55,50,23,22,21,20,7,6,35,55,7,21,6,7,38,39,53,52,63,1, +54,53,38,39,35,6,7,6,7,38,39,54,55,54,55,51,22,23,22,23,6,7,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,2,30,13,9,10,10,9,13,69,45,2,22,22, +2,12,57,11,2,21,51,21,1,2,22,22,2,1,19,20,29,51,31,20,20,1,1,34,1,192,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,112,9,9,14,29,3,9,9,14,14,9,9,142, +28,2,22,2,2,22,16,13,8,34,6,13,20,2,2,20,22,2,2,22,30,20,19,1,1,19,20,30,38,22,0,0, +0,3,0,0,255,192,2,0,1,192,0,26,0,44,0,66,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22, +23,54,55,54,55,54,55,38,39,38,39,38,39,21,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,19, +35,38,39,54,55,51,53,35,38,39,54,55,51,22,23,21,51,22,23,6,7,1,0,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,9,9,14,14,9,9,9,9,14,40,80,22,2,2, +22,16,8,22,2,2,22,32,22,2,16,22,2,2,22,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,128,9,9,14,14,9,9,9,9,14,14,9,9,255,0,2,22,22,2,64,2,22,22, +2,2,22,88,2,22,22,2,0,3,0,0,255,192,2,0,1,192,0,17,0,76,0,133,0,0,55,52,55,49,54,51, +50,23,22,21,20,7,6,35,34,39,38,53,19,50,23,49,22,29,1,22,23,22,23,51,50,23,22,21,20,7,6,43, +1,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54, +55,53,52,55,54,51,49,3,53,52,55,54,51,50,23,22,29,1,54,55,54,55,35,34,39,38,53,52,55,54,59,1, +38,39,38,39,21,20,7,6,35,34,39,38,61,1,6,7,6,7,51,50,23,22,21,20,7,6,43,1,22,23,22,23, +224,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49, +72,9,9,14,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49,72,9,9,14,32,9,9,14,14,9, +9,44,31,32,10,21,14,9,9,9,9,14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,21,14,9,9,9, +9,14,21,10,32,31,44,192,14,9,9,9,9,14,14,9,9,9,9,14,1,0,9,9,14,10,12,49,49,72,9,9, +14,14,9,9,72,49,49,12,10,14,9,9,9,9,14,10,12,49,49,72,9,9,14,14,9,9,72,49,49,12,10,14, +9,9,254,107,21,14,9,9,9,9,14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,21,14,9,9,9,9, +14,21,10,32,31,44,9,9,14,14,9,9,44,31,32,10,0,3,0,0,255,192,2,0,1,192,0,26,0,36,0,48, +0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,6,7, +22,23,22,23,54,55,1,5,38,39,49,38,39,6,7,1,54,55,49,2,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,254,100,35,1,2,54,54,82,63,48,254,245,1,92,2,54,54,82,63, +48,1,12,34,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,111,48, +63,82,54,54,2,1,34,1,12,111,82,54,54,2,1,35,254,245,48,63,0,1,0,0,0,0,1,191,1,128,0,35, +0,0,37,20,7,49,6,35,33,23,22,21,20,7,6,35,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15, +1,33,50,23,22,21,1,191,9,8,14,254,205,106,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9,106,1, +51,14,8,9,192,14,9,9,105,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,105,9,9,14,0, +0,1,0,0,0,0,1,192,1,128,0,34,0,0,37,7,6,35,34,39,38,53,52,63,1,33,34,39,38,53,52,55, +54,51,33,39,38,53,52,55,54,51,50,31,1,22,21,20,7,1,183,160,10,13,13,10,9,9,106,254,205,14,9,9, +9,9,14,1,51,106,9,9,10,13,13,10,160,9,9,169,160,9,9,10,13,13,10,105,9,9,14,14,9,9,105,10, +13,13,10,9,9,160,10,13,13,10,0,0,0,1,0,0,255,225,1,128,1,160,0,34,0,0,37,6,35,34,47,1, +17,20,7,6,35,34,39,38,53,17,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,1,119,10, +13,13,10,105,9,9,13,13,10,10,105,10,13,13,10,9,9,160,10,13,13,10,160,9,9,201,9,9,106,254,205,14, +8,9,9,8,14,1,51,106,9,9,10,13,13,10,160,9,9,160,10,13,13,10,0,0,0,1,0,0,255,224,1,128, +1,159,0,34,0,0,37,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,17,52,55,54,51,50,23,22,21,17, +55,54,51,50,23,22,21,20,7,1,119,160,10,13,13,10,160,9,9,10,13,13,10,105,9,9,13,13,10,10,105,10, +13,13,10,9,9,137,160,9,9,160,10,13,13,10,9,9,106,1,51,14,8,9,9,8,14,254,205,106,9,9,10,13, +13,10,0,0,0,1,0,0,255,225,2,0,1,160,0,34,0,0,37,7,6,39,38,39,53,34,7,6,23,22,7,6, +39,38,39,38,39,54,55,54,55,54,51,53,54,55,54,31,1,22,21,20,7,1,248,176,13,13,13,1,117,46,47,33, +3,10,9,12,34,24,24,1,1,38,38,65,65,81,1,13,13,13,176,8,8,222,151,10,6,6,16,87,39,40,107,12, +7,6,7,24,42,41,47,75,40,40,16,15,80,16,6,6,10,151,8,11,11,7,0,0,0,4,0,0,255,224,1,192, +1,160,0,24,0,49,0,74,0,100,0,0,19,35,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,50,55,54, +53,52,39,38,35,33,35,34,7,6,21,20,23,22,59,1,21,20,23,22,51,50,55,54,61,1,52,39,38,35,1,35, +53,52,39,38,35,34,7,6,29,1,20,23,22,59,1,50,55,54,53,52,39,38,35,37,34,7,49,6,29,1,35,34, +7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38,35,128,96,14,9,9,9,9,14,14,9,9,64,14,9,9, +9,9,14,1,32,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,254,224,64,9,9,14,14,9,9,9, +9,14,96,14,9,9,9,9,14,1,32,14,9,9,64,14,9,9,9,9,14,96,14,9,9,9,9,14,1,160,9,9, +14,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9, +254,128,64,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,96,9,9,14,64,9,9,14,14,9,9,9,9, +14,96,14,9,9,0,0,0,0,4,0,0,255,224,1,192,1,160,0,24,0,49,0,74,0,100,0,0,55,35,34,7, +6,21,20,23,22,59,1,21,20,23,22,51,50,55,54,61,1,52,39,38,35,33,35,34,7,6,29,1,20,23,22,51, +50,55,54,61,1,51,50,55,54,53,52,39,38,35,39,51,50,55,54,53,52,39,38,43,1,53,52,39,38,35,34,7, +6,29,1,20,23,22,51,39,34,7,49,6,29,1,35,34,7,6,21,20,23,22,59,1,50,55,54,61,1,52,39,38, +35,128,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,1,32,96,14,9,9,9,9,14,14,9,9,64, +14,9,9,9,9,14,96,96,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,192,14,9,9,64,14,9,9, +9,9,14,96,14,9,9,9,9,14,128,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9,9,9,14,96, +14,9,9,9,9,14,64,9,9,14,14,9,9,128,9,9,14,14,9,9,64,14,9,9,9,9,14,96,14,9,9,160, +9,9,14,64,9,9,14,14,9,9,9,9,14,96,14,9,9,0,0,0,0,1,0,16,0,160,1,176,0,224,0,18, +0,0,37,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,1,144,254,160,14,9,9,9,9,14,1, +96,14,9,9,9,9,14,160,9,9,14,14,9,9,9,9,14,14,9,9,0,3,0,0,255,192,2,0,1,192,0,26, +0,37,0,55,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38, +39,7,54,55,22,23,21,6,7,38,39,53,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,0, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,24,2,22,22,2,2,22,22, +2,24,13,9,9,9,9,13,13,9,9,9,9,13,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,152,22,2,2,22,128,22,2,2,22,128,248,9,9,13,14,9,9,9,9,14,13,9,9, +0,5,0,0,255,192,2,0,1,192,0,41,0,55,0,70,0,79,0,88,0,0,19,51,22,31,1,55,54,55,51,22, +23,22,23,20,7,51,50,23,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54,59,1,38,53,54,55,54,55, +23,38,39,35,34,7,6,21,20,23,22,59,1,39,55,35,6,15,1,51,50,55,54,53,52,39,38,35,49,5,51,21, +35,38,39,38,39,53,5,53,51,21,6,7,6,7,35,152,2,51,27,24,24,27,51,2,37,25,25,1,10,42,14,9, +9,9,9,14,254,64,14,9,9,9,9,14,42,10,1,25,25,37,39,13,24,2,17,11,12,12,11,17,73,34,169,2, +24,12,35,73,17,11,12,12,11,17,254,184,192,144,20,14,13,1,1,0,192,1,13,14,20,144,1,192,2,42,41,41, +42,2,1,25,25,37,21,19,9,9,14,64,14,9,9,9,9,14,64,14,9,9,19,21,37,25,25,1,69,20,1,12, +11,17,17,11,12,59,21,1,20,59,12,11,17,17,11,12,240,224,1,13,14,20,176,224,224,176,20,14,13,1,0,0, +0,1,0,0,255,224,2,0,1,160,0,53,0,0,1,6,7,49,6,7,6,35,38,39,38,39,6,7,6,21,6,7, +34,39,38,55,54,55,54,55,54,55,54,55,38,39,6,7,6,7,52,55,54,55,54,55,54,23,22,55,54,55,54,51, +50,23,22,23,2,0,1,47,47,80,31,34,49,42,41,24,39,15,15,5,18,3,3,20,3,4,32,33,72,72,122,15, +1,1,15,80,60,59,41,4,11,35,35,50,43,38,43,41,41,24,5,8,8,4,25,1,1,27,98,72,73,28,12,1, +25,25,44,40,33,33,3,17,1,1,7,22,22,54,53,47,47,3,1,15,15,1,1,21,22,32,17,16,51,36,35,13, +9,9,10,15,15,41,7,8,58,67,0,0,0,2,0,0,255,192,1,192,1,192,0,24,0,50,0,0,1,6,7,38, +39,6,7,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,3,6,7,38,39,38,39,52,55,54,55, +22,23,22,23,22,23,48,49,55,22,23,22,7,6,7,1,68,32,25,41,58,75,46,46,1,1,30,29,51,50,63,63, +50,51,29,30,1,1,34,34,55,20,33,44,56,37,37,1,18,18,37,5,23,24,22,23,2,58,6,5,21,8,9,37, +1,141,29,31,57,54,71,77,78,56,64,52,52,31,30,1,1,30,31,52,52,64,43,67,67,54,254,171,23,1,1,33, +33,58,28,30,30,43,6,30,30,28,29,2,66,10,9,41,43,43,27,0,0,3,0,0,255,224,2,64,1,160,0,24, +0,63,0,81,0,0,1,50,51,22,23,22,23,6,7,6,7,38,39,38,39,52,53,22,23,54,55,54,55,38,39,55, +22,23,49,22,23,22,7,6,7,6,7,6,7,6,7,38,39,38,39,38,39,38,39,38,55,54,55,54,55,54,55,54, +55,22,23,22,23,49,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,24,4,4,41,27,27,1, +1,27,27,41,41,27,27,1,15,17,27,18,18,1,1,7,201,35,23,23,12,4,4,12,23,23,35,36,48,48,61,61, +48,48,36,35,23,23,12,4,4,12,23,23,35,36,48,48,61,61,48,48,36,193,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,1,32,1,27,27,41,41,27,27,1,1,27,27,41,4,4,7,1,1,18,18,27,17,15,47,33, +35,35,28,12,12,28,35,34,34,34,23,23,1,1,23,23,34,34,34,35,28,12,12,28,35,35,33,34,23,23,1,1, +23,23,34,1,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,0,3,0,0,255,192,2,128,1,192,0,30, +0,55,0,82,0,0,19,54,55,49,54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,23,22,7,6,39,1, +38,55,54,31,3,54,53,38,39,50,51,54,51,22,23,22,23,20,7,23,54,53,38,39,38,39,6,7,19,38,39,49, +38,39,38,39,38,39,38,55,54,55,23,6,21,22,23,22,23,50,55,23,6,7,49,151,33,42,43,51,61,48,48,36, +35,23,23,12,4,4,11,20,20,29,105,16,12,15,19,253,176,16,12,15,19,112,72,90,7,1,7,1,2,3,2,41, +27,27,1,9,40,17,2,40,41,61,57,40,97,61,48,48,36,35,23,23,12,4,4,15,34,94,1,2,40,41,61,28, +25,73,54,72,1,99,27,17,16,1,1,23,23,34,33,35,35,28,12,12,25,31,32,31,82,15,19,16,12,1,208,15, +19,16,12,88,57,70,12,17,16,15,1,1,27,27,41,22,18,30,31,39,60,41,41,2,2,37,254,182,1,23,23,34, +34,34,35,28,12,12,36,46,74,10,9,62,41,40,2,10,58,30,2,0,0,3,0,0,255,224,2,0,1,160,0,15, +0,28,0,46,0,0,37,3,38,35,34,7,3,6,23,22,23,33,54,55,54,39,37,54,55,22,23,21,6,7,34,39, +38,61,1,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,250,213,14,23,23,14,213,12,12,11, +26,1,170,26,11,12,12,254,238,2,22,22,2,2,21,10,7,8,24,13,9,9,9,9,13,13,9,9,9,9,13,31, +1,108,21,21,254,148,22,20,20,1,1,20,20,22,249,22,2,2,22,128,22,2,7,7,10,128,248,9,9,13,14,9, +9,9,9,14,13,9,9,0,0,1,0,0,255,192,2,64,1,192,0,45,0,0,1,22,23,49,22,23,6,7,6,7, +35,7,6,7,35,38,63,1,35,7,6,43,1,38,39,52,63,1,39,38,53,54,55,51,50,31,1,51,39,38,55,51, +22,31,1,51,1,226,29,31,31,3,3,31,31,29,116,101,9,19,56,18,3,49,103,43,5,8,42,13,1,1,31,31, +1,1,13,42,8,5,43,103,49,3,18,56,19,9,101,116,1,0,1,18,18,27,28,18,17,1,176,15,1,3,17,172, +58,6,1,14,1,2,110,110,2,2,13,1,6,58,172,17,3,1,15,176,0,8,0,0,255,192,1,192,1,192,0,34, +0,47,0,60,0,73,0,86,0,99,0,112,0,125,0,0,19,21,51,53,52,55,54,51,50,23,22,29,1,51,22,23, +22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7,33,38,39,38,39,17, +23,22,23,51,54,55,53,38,39,35,6,7,21,51,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39, +35,23,22,23,51,54,55,53,38,39,35,6,7,21,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14, +20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14,13,1,64,1,15,32,15,1,1,15,32,15,1, +128,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32, +15,1,144,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,1,160,32,32,14,9,9,9, +9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1, +16,112,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15, +1,176,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1, +15,32,0,0,0,3,0,0,255,216,1,255,1,168,0,33,0,55,0,71,0,0,37,38,7,49,6,7,21,35,39,38, +43,1,34,7,6,21,20,23,22,59,1,23,22,59,1,21,22,23,22,63,1,54,47,2,51,21,22,23,22,63,1,54, +47,1,38,7,6,7,21,35,34,15,1,23,55,7,35,34,7,6,21,20,23,22,59,1,50,63,1,39,7,1,168,12, +14,13,1,48,182,10,16,96,14,9,9,9,9,14,80,182,10,16,64,1,14,13,13,79,14,14,80,88,48,1,14,13, +12,79,14,14,79,12,14,14,1,63,16,10,40,39,43,224,80,14,9,9,9,9,14,96,16,10,40,40,42,161,11,6, +5,17,48,243,13,9,9,14,14,9,9,243,13,48,16,6,6,11,80,17,17,80,127,48,17,5,6,11,80,17,17,80, +11,6,6,16,48,13,54,53,56,192,9,9,14,14,9,9,13,54,53,56,0,1,0,0,255,224,1,255,1,160,0,36, +0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22,51,54,55,54,55,54, +55,38,39,38,39,38,39,1,0,72,57,58,34,34,1,2,55,12,20,20,3,3,2,2,5,50,36,35,20,49,58,71, +58,57,34,34,1,1,34,34,57,58,71,1,160,1,27,28,47,47,58,76,55,39,27,28,1,4,5,5,1,17,17,16, +19,1,27,28,47,47,58,58,47,47,28,27,1,0,0,0,0,3,0,0,255,224,1,192,1,160,0,26,0,40,0,54, +0,0,19,21,22,23,22,23,54,55,54,55,53,51,21,6,7,6,7,6,7,38,39,38,39,38,39,53,51,39,52,55, +49,54,59,1,50,23,22,29,1,35,53,33,52,55,49,54,59,1,50,23,22,29,1,35,53,128,1,27,27,41,41,27, +27,1,128,1,30,29,51,50,63,63,50,51,29,30,1,128,128,9,9,14,64,14,9,9,128,1,64,9,9,14,64,14, +9,9,128,1,32,96,41,27,27,1,1,27,27,41,96,96,63,50,51,29,30,1,1,30,29,51,50,63,96,96,14,9, +9,9,9,14,64,64,14,9,9,9,9,14,64,64,0,0,0,1,0,0,0,96,1,192,1,96,0,24,0,0,37,34, +47,1,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,1,160,13,10,169,169,10,13,13, +10,9,9,192,10,13,13,10,192,9,9,10,13,96,9,170,170,9,9,10,13,13,10,192,9,9,192,10,13,13,10,9, +0,1,0,0,0,32,1,192,1,32,0,24,0,0,55,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23, +22,21,20,15,1,6,35,224,13,10,192,9,9,10,13,13,10,169,169,10,13,13,10,9,9,192,10,13,32,9,192,10, +13,13,10,9,9,170,170,9,9,10,13,13,10,192,9,0,0,2,0,24,0,0,2,103,1,128,0,34,0,69,0,0, +37,38,39,35,53,38,39,38,39,35,34,7,6,21,20,23,22,59,1,22,23,21,35,6,7,6,31,1,22,51,50,63, +1,54,39,5,35,38,39,53,51,54,55,54,47,1,38,35,34,15,1,6,23,22,23,51,21,22,23,22,23,51,50,55, +54,53,52,39,38,35,2,102,6,16,48,1,22,23,34,128,14,9,9,9,9,14,128,15,1,48,16,6,6,11,80,7, +10,10,7,80,10,5,254,202,128,15,1,48,16,6,6,11,80,7,10,10,7,80,10,5,6,16,48,1,22,23,34,128, +14,9,9,9,9,14,113,15,1,143,34,23,22,1,9,9,14,14,9,9,1,15,143,1,14,15,11,80,8,7,80,12, +14,17,1,15,144,1,14,14,12,80,7,7,80,12,14,14,1,144,34,23,22,1,9,9,14,14,9,9,0,3,0,0, +255,192,2,61,1,192,0,28,0,46,0,64,0,0,19,22,31,1,33,22,23,22,15,1,6,7,33,23,33,22,23,6, +7,33,38,39,3,35,38,39,54,55,51,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,33,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,96,19,5,1,1,165,16,9,9,3,54,8,23,254,195,9,1, +52,22,2,2,22,254,183,18,5,60,52,22,2,2,22,72,32,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,1,19,12,1,12,12,16,192,22,1,48, +2,22,22,2,1,18,1,61,2,22,22,2,254,48,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,1,0,0,255,224,2,0,1,160,0,22,0,0,1,17, +6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,23,51,22,23,22,23,2,0,1,13,14,20,254,96,20,14,13, +1,1,13,14,20,160,64,192,20,14,13,1,1,48,254,224,20,14,13,1,1,13,14,20,1,96,20,14,13,1,64,1, +13,14,20,0,0,2,0,0,255,224,2,63,1,160,0,17,0,30,0,0,19,33,53,38,39,38,39,35,39,35,6,7, +6,7,17,55,54,55,5,33,6,15,1,33,54,63,1,54,39,38,39,148,1,76,1,13,14,20,160,64,160,20,14,13, +1,91,18,39,1,139,254,117,20,9,119,1,191,19,10,96,8,9,9,19,1,0,48,20,14,13,1,64,1,13,14,20, +254,184,181,34,1,32,1,17,238,1,17,192,17,14,14,1,0,1,0,0,255,192,1,0,1,192,0,50,0,0,55,22, +21,20,15,1,6,35,34,47,1,38,53,52,55,54,51,50,31,1,17,7,6,35,34,39,38,53,52,63,1,54,51,50, +31,1,22,21,20,7,6,35,34,47,1,17,55,54,51,50,23,247,9,9,96,10,13,13,10,96,9,9,10,13,13,10, +41,41,10,13,13,10,9,9,96,10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,87,10,13,13,10,96, +9,9,96,10,13,13,10,9,9,42,1,38,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10,9,9,42,254,218, +42,9,9,0,0,1,0,0,0,64,2,0,1,64,0,50,0,0,37,7,6,35,34,39,38,53,52,63,1,33,23,22, +21,20,7,6,35,34,47,1,38,53,52,63,1,54,51,50,23,22,21,20,15,1,33,39,38,53,52,55,54,51,50,31, +1,22,21,20,7,1,247,96,10,13,13,10,9,9,42,254,218,42,9,9,10,13,13,10,96,9,9,96,10,13,13,10, +9,9,42,1,38,42,9,9,10,13,13,10,96,9,9,169,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96, +10,13,13,10,96,9,9,10,13,13,10,41,41,10,13,13,10,9,9,96,10,13,13,10,0,4,0,0,255,224,2,0, +1,160,0,27,0,47,0,67,0,87,0,0,19,50,23,49,22,21,17,22,23,33,50,23,22,21,20,7,6,35,33,38, +39,38,39,17,52,55,54,51,23,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,23,50,23,49, +22,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,23,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,51,33,32,14,9,9,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1,9,9,14,96,9,9,14,192, +14,9,9,9,9,14,192,14,9,9,160,14,9,9,9,9,14,128,14,9,9,9,9,14,128,128,14,9,9,9,9,14, +255,0,14,9,9,9,9,14,1,0,1,160,9,9,14,254,176,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14, +9,9,96,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,3,0,0,255,224,2,0,1,160,0,31,0,45,0,63,0,0,19,53, +54,55,51,22,23,21,51,55,54,59,1,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,23,6, +43,1,21,51,54,55,22,23,51,53,35,7,23,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,64,1, +15,64,15,1,32,51,13,15,177,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,157,14,15,128,115, +33,44,44,33,115,177,50,35,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,1,128,16,15,1,1,15,16, +25,7,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,32,27,18,18,1,57,7,64,23,1,1,23,96,25,95, +1,25,25,37,37,25,25,1,1,25,25,37,37,25,25,1,0,2,0,0,255,192,2,0,1,192,0,34,0,52,0,0, +37,7,6,43,1,21,6,7,35,21,6,7,35,38,39,53,52,63,1,38,53,54,55,54,55,22,23,22,23,6,7,6, +7,34,39,55,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,26,34,6,10,40,2,22,40,2,22, +80,22,2,7,161,8,2,50,49,75,75,49,50,2,2,50,49,75,28,26,94,17,11,12,12,11,17,17,11,12,12,11, +17,104,32,8,40,22,2,40,22,2,2,22,80,10,7,161,26,28,75,49,50,2,2,50,49,75,75,49,50,2,8,168, +12,11,17,17,11,12,12,11,17,17,11,12,0,4,0,3,255,196,2,120,1,184,0,92,0,110,0,203,0,221,0,0, +1,22,21,20,7,23,22,7,6,7,6,15,1,6,7,6,7,6,47,1,6,15,1,6,7,6,35,34,39,38,47,1, +38,39,7,6,39,38,47,1,38,39,38,63,1,38,53,38,53,52,55,52,55,39,38,55,54,55,48,63,1,54,55,54, +31,1,54,63,1,54,55,54,51,50,23,22,31,1,22,23,55,54,23,22,23,22,31,1,22,23,22,15,1,39,6,7, +49,6,7,22,23,22,51,50,55,54,55,38,39,38,39,1,6,35,34,39,7,6,39,38,47,1,38,39,38,39,38,63, +1,38,47,1,38,39,38,53,52,55,54,63,1,54,55,39,38,55,54,55,54,63,1,48,55,54,55,54,31,1,54,51, +50,23,55,54,23,22,31,1,22,23,22,23,22,15,1,22,31,1,22,23,22,21,20,7,6,15,1,6,7,23,22,7, +6,7,6,15,1,6,7,6,7,6,47,1,55,38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55,1,30, +2,2,23,11,5,2,1,2,3,3,3,2,2,3,10,14,29,16,20,7,3,15,10,10,10,10,16,3,7,19,16,28, +15,10,5,5,3,4,4,5,12,22,1,2,2,1,22,12,5,3,4,1,3,5,5,10,15,28,16,19,7,3,16,10, +10,10,10,15,3,7,20,16,29,14,10,3,2,2,3,3,4,4,5,11,23,126,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,1,69,10,11,11,10,20,11,14,8,7,6,4,4,3,3,12,5,9,13,8,29,15,3,1,1, +3,15,29,8,13,9,5,12,1,2,6,6,5,1,6,8,14,11,20,10,11,11,10,20,10,15,8,7,6,5,6,2, +1,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,3,3,4,4,6,4,5,3,3,15,10,20,27, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,37,11,9,12,10,20,10,15,3,3,5,4,6,4,4, +3,3,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,7,7,6,7,8,15,10,20,2,1,9,10, +8,8,2,2,20,11,14,8,6,1,5,8,7,12,5,9,13,8,29,15,3,1,1,3,15,29,8,13,9,5,12,3, +4,3,4,6,7,8,14,11,20,28,1,14,13,20,21,13,14,14,13,21,20,13,14,1,254,161,2,2,23,11,5,4, +4,3,3,2,2,3,10,14,29,16,20,7,3,15,10,10,10,10,16,3,7,19,16,28,15,10,1,1,5,3,3,1, +4,3,5,12,22,2,2,22,12,5,4,4,3,3,5,1,1,10,15,28,16,19,7,3,16,10,10,10,10,15,3,7, +20,16,29,14,10,3,2,2,3,3,3,2,1,2,5,11,23,126,20,14,13,1,1,13,14,20,20,14,13,1,1,13, +14,20,0,0,0,2,0,0,255,192,2,128,1,192,0,27,0,64,0,0,1,38,39,49,38,39,6,7,6,7,22,23, +6,7,6,7,6,23,22,51,54,55,22,23,54,55,54,55,19,54,55,38,39,38,39,48,49,34,49,20,21,22,21,6, +7,6,7,22,23,22,23,54,55,22,23,50,55,54,39,48,49,38,39,38,39,1,160,2,59,59,88,88,59,59,2,1, +41,14,12,13,1,3,2,2,5,58,37,47,58,88,59,59,2,184,39,1,2,54,54,82,1,1,2,51,52,81,17,50, +50,69,51,42,37,54,5,2,2,3,3,11,12,12,1,16,75,49,50,2,2,50,49,75,60,45,25,16,16,1,4,4, +5,2,22,23,1,2,50,49,75,254,244,46,62,75,49,50,2,1,1,7,7,75,55,55,18,58,37,37,1,1,21,20, +2,5,4,4,2,15,15,23,0,2,0,24,255,192,1,177,1,192,0,16,0,20,0,0,37,7,6,39,38,63,1,39, +38,55,54,63,2,54,55,19,23,34,35,51,1,32,128,18,16,15,2,25,104,14,6,6,19,144,64,10,18,1,145,1, +2,3,8,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,254,72,72,0,0,0,0,2,0,0,255,224,2,0, +1,160,0,38,0,73,0,0,55,35,34,39,38,53,17,52,55,54,59,1,50,55,54,53,52,39,38,43,1,6,7,6, +7,17,22,23,22,23,51,50,55,54,53,52,39,38,35,37,39,38,35,34,7,6,21,20,31,1,35,34,7,6,21,20, +23,22,59,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,160,64,14,9,9,9,9,14,64,14,9,9,9,9, +14,64,41,27,27,1,1,27,27,41,64,14,9,9,9,9,14,1,87,128,10,13,13,10,9,9,74,211,14,9,9,9, +9,14,211,74,9,9,10,13,13,10,128,9,9,32,9,9,14,1,0,14,9,9,9,9,14,14,9,9,1,27,27,41, +255,0,41,27,27,1,9,9,14,14,9,9,183,128,9,9,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10, +9,9,128,10,13,13,10,0,0,2,0,0,255,192,1,127,1,192,0,37,0,49,0,0,19,52,55,49,54,51,33,50, +23,22,21,20,7,6,43,1,23,22,31,1,22,7,6,35,33,34,39,38,63,1,54,63,1,35,34,39,38,53,19,21, +20,7,6,35,34,39,38,61,1,51,32,9,9,14,1,0,14,9,9,9,9,14,29,11,57,22,1,5,10,9,16,254, +192,16,10,9,5,1,22,57,12,30,14,9,9,192,9,9,14,14,9,9,64,1,160,14,9,9,9,9,14,14,9,9, +148,31,64,3,15,14,13,13,14,15,3,64,31,148,9,9,14,254,160,96,14,9,9,9,9,14,96,0,0,2,0,0, +255,224,1,192,1,160,0,50,0,88,0,0,1,52,55,49,54,59,1,48,49,48,49,50,23,20,51,22,23,48,49,22, +23,48,49,48,49,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,34,39,38,53,49,5, +54,55,49,54,55,51,50,23,22,21,20,7,6,43,1,17,33,53,52,55,54,51,50,23,22,29,1,6,7,6,7,33, +38,39,38,39,17,1,0,9,9,14,127,8,5,1,5,5,8,1,9,9,14,14,9,9,169,10,13,13,10,9,9,170, +51,14,9,9,255,0,1,18,18,27,96,14,9,9,9,9,14,96,1,32,9,9,14,14,9,9,1,18,18,27,254,224, +27,18,18,1,1,128,14,9,9,2,1,2,4,10,13,128,14,9,9,9,9,14,51,170,9,9,10,13,13,10,169,9, +9,14,64,27,18,18,1,9,9,14,14,9,9,254,224,96,14,9,9,9,9,14,96,27,18,18,1,1,18,18,27,1, +32,0,0,0,0,2,0,0,255,224,2,0,1,160,0,38,0,73,0,0,1,35,34,7,6,21,20,23,22,59,1,50, +23,22,21,17,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,17,38,39,38,39,7,39,38,35,34, +7,6,21,20,31,1,35,34,7,6,21,20,23,22,59,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,1,160, +64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,73,128, +10,13,13,10,9,9,74,211,14,9,9,9,9,14,211,74,9,9,10,13,13,10,128,9,9,1,160,9,9,14,14,9, +9,9,9,14,255,0,14,9,9,9,9,14,14,9,9,1,27,27,41,1,0,41,27,27,1,201,128,9,9,10,13,13, +10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,0,3,0,0,255,192,2,63,1,192,0,64, +0,77,0,89,0,0,1,38,39,35,52,53,38,39,38,35,33,34,7,6,7,6,23,20,21,35,6,7,6,7,6,23, +22,23,22,23,22,23,20,7,6,43,1,6,7,6,7,22,23,51,54,55,52,39,38,39,35,34,39,38,39,54,55,54, +55,54,55,54,39,38,39,5,38,39,49,38,55,51,22,23,22,23,38,39,33,6,7,54,55,54,55,51,22,7,6,7, +2,60,5,18,101,1,9,9,13,255,0,13,9,9,1,1,1,101,18,5,1,3,2,7,7,25,57,131,29,2,13,12, +18,5,20,14,13,1,2,13,223,14,1,14,13,21,4,19,12,12,1,2,30,131,56,27,7,8,3,2,1,254,17,20, +5,5,1,81,3,14,13,27,73,36,1,166,36,73,27,13,14,3,81,1,5,5,20,1,110,17,1,19,14,13,9,9, +9,9,13,11,15,3,4,1,17,3,24,24,36,37,40,84,33,10,32,18,12,13,1,13,14,20,15,1,1,15,20,14, +13,1,13,12,18,32,10,33,84,40,37,36,24,24,3,138,32,29,29,18,46,49,50,44,29,52,52,29,44,50,50,45, +18,29,29,32,0,3,0,0,255,192,2,0,1,192,0,35,0,65,0,74,0,0,19,22,51,49,50,63,1,21,20,23, +22,51,50,55,54,61,1,23,22,51,50,55,54,53,52,47,1,38,35,34,15,1,6,21,20,23,5,35,6,7,6,7, +38,39,38,39,35,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35,7,38,39,54,55,22,23,6, +7,105,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,128,9,9,1,119,160,1, +18,18,27,27,18,18,1,160,14,9,9,9,9,14,1,192,14,9,9,9,9,14,48,22,2,2,22,22,2,2,22,1, +9,9,9,74,243,14,9,9,9,9,14,243,74,9,9,10,13,13,10,128,9,9,128,10,13,13,10,169,27,18,18,1, +1,18,18,27,9,9,14,96,14,9,9,9,9,14,96,14,9,9,104,2,22,22,2,2,22,22,2,0,0,2,0,0, +255,224,1,192,1,160,0,41,0,61,0,0,1,38,39,49,38,7,6,39,38,7,6,7,6,7,6,23,22,7,6,23, +22,23,22,23,22,55,54,23,22,55,54,55,54,55,54,39,38,55,54,39,38,39,7,6,7,49,6,7,6,35,34,35, +38,55,54,55,54,55,54,23,22,7,1,172,16,18,18,14,26,43,43,54,54,61,58,9,9,6,7,13,8,4,4,15, +16,18,18,14,26,43,43,54,54,61,58,9,9,6,7,13,8,4,4,15,216,35,36,35,10,4,13,2,2,13,2,13, +41,42,44,15,5,2,14,1,140,15,4,4,8,13,7,6,9,9,58,61,54,54,43,43,26,14,18,18,16,15,4,4, +8,13,7,6,9,9,58,61,54,54,43,43,26,14,18,18,16,76,10,35,36,35,11,4,15,44,41,42,12,3,14,15, +5,0,0,0,0,1,0,0,255,192,1,255,1,191,0,28,0,0,37,7,6,7,38,39,38,39,38,39,54,63,1,54, +31,1,22,15,1,22,23,22,23,55,54,31,1,22,7,1,255,23,7,24,127,103,103,61,62,1,1,23,101,24,12,46, +8,17,53,25,41,41,52,44,15,22,108,21,3,61,101,23,1,1,62,61,103,103,127,24,7,23,4,22,108,22,15,43, +52,41,41,26,54,17,8,46,13,24,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,47,0,0,1,33,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,7,6,7,38,39,38,39,38,39,54,63,1,54,31, +1,22,15,1,22,23,55,54,31,1,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18, +18,27,32,12,3,12,64,52,51,31,30,1,1,11,51,12,5,24,4,9,27,27,53,22,8,10,55,11,2,1,160,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,222,50,11,1,1,30,31,51,52,64,12,3, +12,2,11,55,10,8,22,53,27,27,9,4,24,5,13,0,0,1,0,0,255,192,1,192,1,192,0,47,0,0,19,51, +22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,22,7,6, +7,6,39,38,39,38,39,38,35,6,7,6,7,21,144,240,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18, +18,27,16,2,40,41,61,44,34,34,18,6,5,4,13,12,12,12,6,10,19,19,24,34,23,22,1,1,0,1,18,18, +27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,48,61,41,40,2,1,22,22,37,13,12,12,6,5,4,4,12, +21,12,13,1,22,23,34,48,0,4,0,0,255,224,2,64,1,160,0,13,0,27,0,38,0,49,0,0,1,22,23,49, +22,23,21,33,53,54,55,54,55,33,19,6,7,49,6,7,33,38,39,38,39,53,33,21,37,6,7,22,23,51,54,55, +38,39,35,23,51,54,55,38,39,35,6,7,22,23,2,0,27,18,18,1,253,192,1,18,18,27,1,192,64,1,18,18, +27,254,64,27,18,18,1,2,64,254,48,15,1,1,15,64,15,1,1,15,64,128,128,15,1,1,15,128,15,1,1,15, +1,160,1,18,18,27,32,32,27,18,18,1,254,128,27,18,18,1,1,18,18,27,192,192,64,1,15,15,1,1,15,15, +1,32,1,15,15,1,1,15,15,1,0,0,0,3,0,0,255,224,1,192,1,160,0,24,0,54,0,72,0,0,19,6, +7,22,23,22,23,22,23,22,23,22,23,50,51,48,49,54,55,38,39,38,39,38,39,55,34,7,49,6,21,20,23,22, +51,22,23,22,23,22,23,20,23,22,51,50,55,54,53,38,39,38,39,38,39,19,6,7,49,6,7,22,23,22,23,54, +55,54,55,52,39,38,39,26,22,4,1,21,61,52,51,33,32,5,3,20,1,1,21,1,5,39,38,61,61,73,6,14, +9,9,9,9,14,98,80,79,47,47,1,9,9,14,14,9,9,1,56,55,94,94,116,31,26,18,18,1,1,18,18,26, +27,18,18,1,18,18,28,1,16,1,21,22,4,5,32,33,51,51,62,20,2,4,22,73,61,61,39,38,6,144,9,9, +14,14,9,9,1,47,47,79,80,98,14,9,9,9,9,14,116,94,94,55,56,1,254,192,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,0,4,0,0,255,224,2,0,1,160,0,20,0,38,0,56,0,73,0,0,37,33,6,7, +6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,51,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,19,33,6,7,6,7,21,54,55,33,22, +23,53,38,39,38,39,1,208,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,144,14,9,9, +9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,48,254,96,20,14,13,1,20,28,1, +160,28,20,1,13,14,20,160,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,128,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,1,128,1,13,14,20,192,15,1,1,15,192,20, +14,13,1,0,0,2,0,0,255,192,2,0,1,192,0,51,0,65,0,0,1,22,23,49,22,21,20,7,6,7,21,6, +7,6,47,1,38,39,38,43,1,21,20,7,6,43,1,34,39,38,61,1,38,39,38,39,53,54,55,54,55,51,50,55, +54,63,1,54,23,22,23,21,5,35,21,51,50,23,22,23,17,6,7,6,35,49,1,224,14,9,9,9,9,14,1,19, +19,16,43,37,46,47,51,9,9,9,14,64,14,9,9,27,18,18,1,1,18,18,27,137,51,47,46,37,43,16,19,19, +1,254,233,9,9,60,55,55,45,45,55,55,60,1,12,7,16,16,21,21,16,16,7,148,21,9,7,14,45,36,19,19, +128,14,9,9,9,9,14,128,1,18,18,27,96,27,18,18,1,19,20,36,44,14,7,9,21,148,12,96,22,21,40,1, +6,40,21,22,0,1,0,0,255,193,1,255,1,191,0,72,0,0,1,55,54,23,22,31,1,55,54,23,22,15,1,23, +22,23,22,15,1,23,22,7,6,15,1,23,22,7,6,47,1,7,6,7,6,47,1,7,6,39,38,47,1,7,6,39, +38,63,1,39,38,39,38,63,1,39,38,55,54,63,1,39,38,55,54,31,1,55,54,55,54,31,1,1,0,44,10,14, +14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,14,10, +44,45,11,12,14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16, +3,14,12,11,45,1,139,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,12,11,45,44,10,14,14,3,16,62, +14,10,9,3,18,63,13,4,3,9,46,46,9,3,4,13,63,18,3,9,10,14,62,16,3,14,14,10,44,45,11,12, +14,3,16,62,14,10,9,3,18,63,13,4,3,9,46,0,0,5,0,0,0,0,2,0,1,128,0,19,0,33,0,49, +0,69,0,115,0,0,55,20,23,49,22,59,1,50,55,54,53,52,39,38,43,1,34,7,6,21,55,51,50,55,54,53, +52,39,38,43,1,21,20,7,55,51,50,55,54,53,52,39,38,43,1,20,21,22,29,1,19,52,39,49,38,43,1,34, +7,6,21,20,23,22,59,1,50,55,54,53,39,38,53,52,55,38,39,38,39,53,54,55,22,23,21,20,23,22,23,50, +55,54,61,1,52,39,38,43,1,6,15,1,6,29,1,22,23,22,23,51,38,53,52,55,54,55,224,9,9,14,64,14, +9,9,9,9,14,64,14,9,9,44,84,14,9,9,9,9,14,80,4,4,208,14,9,9,9,9,14,209,1,48,9,9, +14,64,14,9,9,9,9,14,64,14,9,9,118,10,3,29,19,18,1,2,13,15,1,10,10,21,17,11,12,12,11,17, +63,53,32,26,26,1,39,38,58,33,9,12,12,18,128,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14, +9,9,40,13,11,96,9,9,14,14,9,9,1,1,3,3,56,255,0,14,9,9,9,9,14,14,9,9,9,9,14,60, +16,20,9,8,2,20,20,29,73,13,2,2,13,70,13,14,14,1,11,11,17,128,17,11,12,1,42,36,36,44,89,58, +38,39,1,14,18,21,16,16,7,0,0,0,0,5,0,0,0,0,2,0,1,128,0,18,0,32,0,49,0,68,0,114, +0,0,37,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,53,35,34,7,6,21,20,23,22,59, +1,38,61,1,52,55,49,52,53,35,34,7,6,21,20,23,22,59,1,53,3,51,50,55,54,53,52,39,38,43,1,34, +7,6,21,20,23,22,51,55,20,7,51,54,55,54,55,53,52,47,1,38,39,35,34,7,6,29,1,20,23,22,51,54, +55,54,53,55,54,55,22,23,21,6,7,6,7,22,21,20,7,22,23,22,21,1,0,64,14,9,9,9,9,14,64,14, +9,9,9,9,14,16,80,14,9,9,9,9,14,84,4,1,209,14,9,9,9,9,14,208,16,64,14,9,9,9,9,14, +64,14,9,9,9,9,14,128,9,33,58,38,39,1,26,26,33,52,63,17,11,12,12,11,16,21,10,9,1,1,15,15, +1,1,18,19,29,3,11,19,12,12,160,9,9,14,14,9,9,9,9,14,14,9,9,56,40,9,9,14,14,9,9,11, +13,128,3,3,1,1,9,9,14,14,9,9,56,254,168,9,9,14,14,9,9,9,9,14,14,9,9,32,18,14,1,39, +38,58,89,44,36,36,42,1,12,11,17,128,17,11,11,1,14,14,13,70,13,2,2,13,73,29,20,20,2,8,9,20, +16,7,16,16,21,0,0,0,0,5,0,32,255,192,1,160,1,192,0,19,0,33,0,49,0,69,0,115,0,0,37,50, +55,49,54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,39,53,52,39,38,35,34,7,6,29,1,51,50,23, +39,53,52,39,38,35,34,7,6,29,1,50,51,54,59,1,37,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1, +52,39,38,35,7,6,7,34,39,6,7,6,7,35,38,39,54,55,51,50,55,54,55,52,39,38,43,1,34,7,6,29, +1,22,31,1,22,59,1,54,55,54,55,53,6,35,34,39,38,39,1,32,14,9,9,9,9,14,14,9,9,9,9,14, +64,9,9,14,14,9,9,40,13,11,96,9,9,14,14,9,9,1,1,3,3,56,1,0,14,9,9,9,9,14,14,9, +9,9,9,14,60,16,20,9,8,2,20,20,29,73,13,2,2,13,70,13,14,14,1,11,11,17,128,17,11,12,1,42, +36,36,44,89,58,38,39,1,14,18,21,16,16,7,160,9,9,14,64,14,9,9,9,9,14,64,14,9,9,44,84,14, +9,9,9,9,14,80,4,4,208,14,9,9,9,9,14,209,1,48,9,9,14,64,14,9,9,9,9,14,64,14,9,9, +117,10,1,3,29,19,18,1,1,15,15,1,9,10,21,17,11,12,12,11,17,63,53,32,26,26,1,39,38,58,33,9, +12,12,19,0,0,5,0,32,255,192,1,160,1,192,0,18,0,32,0,49,0,68,0,114,0,0,37,21,20,23,22,51, +50,55,54,61,1,52,39,38,35,34,7,6,21,7,35,21,20,23,22,51,50,55,54,61,1,6,43,1,34,39,49,34, +35,21,20,23,22,51,50,55,54,61,1,35,5,53,52,39,38,35,34,7,6,29,1,20,23,22,51,50,55,54,53,39, +50,23,53,38,39,38,39,35,34,15,1,6,7,21,20,23,22,59,1,50,55,54,53,38,39,38,43,1,38,39,54,55, +51,22,23,22,23,54,51,50,23,54,55,54,51,1,0,9,9,14,14,9,9,9,9,14,14,9,9,56,40,9,9,14, +14,9,9,11,13,128,3,3,1,1,9,9,14,14,9,9,56,1,88,9,9,14,14,9,9,9,9,14,14,9,9,32, +18,14,1,39,38,58,89,44,36,36,42,1,12,11,17,128,17,11,11,1,14,14,13,70,13,2,2,13,73,29,20,20, +2,8,9,20,16,7,16,16,21,192,64,14,9,9,9,9,14,64,14,9,9,9,9,14,16,80,14,9,9,9,9,14, +84,4,1,209,14,9,9,9,9,14,208,16,64,14,9,9,9,9,14,64,14,9,9,9,9,14,128,9,33,58,38,39, +1,26,26,32,53,63,17,11,12,12,11,16,21,10,9,3,14,15,1,1,18,19,29,3,11,19,12,12,0,2,0,0, +255,192,2,0,1,192,0,26,0,61,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,19,35,23,22,21,20,7,6,35,34,47,1,38,55,38,63,1,54,51,50,23,22,21,20,15, +1,51,50,23,22,21,20,7,6,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,128,179,50,9,9,10,13,13,10,104,10,1,1,10,103,10,13,13,10,9,9,49,179,14,9,9,9,9, +14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,224,49,10,13, +13,10,9,9,104,14,9,9,14,103,9,9,10,13,13,10,48,9,9,14,14,9,9,0,0,2,0,0,255,192,2,0, +1,192,0,26,0,61,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38, +39,38,39,19,7,6,35,34,39,38,53,52,63,1,35,34,39,38,53,52,55,54,59,1,39,38,53,52,55,54,51,50, +31,1,22,7,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72, +151,103,10,13,13,10,9,9,49,179,14,9,9,9,9,14,179,50,9,9,10,13,13,10,103,12,2,1,10,1,192,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,233,103,9,9,10,13,13,10, +48,9,9,14,14,9,9,49,10,13,13,10,9,9,103,15,9,9,14,0,0,2,0,0,255,192,2,0,1,192,0,26, +0,62,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23, +6,35,49,34,47,1,21,20,7,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,54,23,54,31,1,22, +21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,10,13, +13,10,49,9,9,14,14,9,9,49,10,13,13,10,9,9,103,15,9,9,14,103,10,9,1,192,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,9,9,50,179,14,9,9,9,9,14,179,50,9, +9,10,13,13,10,103,12,2,1,10,103,11,13,13,10,0,0,2,0,0,255,192,2,0,1,192,0,26,0,61,0,0, +1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,39,6, +47,1,38,53,52,55,54,51,50,31,1,53,52,55,54,51,50,23,22,29,1,55,54,51,50,23,22,21,20,7,1,0, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,103,15,9,9,14,104,9, +9,10,13,13,10,49,9,9,14,14,9,9,49,10,13,13,10,9,9,1,192,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,254,209,103,12,2,1,10,104,10,13,13,10,9,9,50,179,14,9,9, +9,9,14,179,50,9,9,10,13,13,10,0,0,9,0,0,255,192,2,0,1,192,0,10,0,21,0,29,0,44,0,53, +0,64,0,79,0,89,0,98,0,0,37,20,7,35,38,39,54,55,51,22,21,55,22,21,20,7,35,54,53,52,39,51, +39,35,38,39,22,23,22,23,43,1,54,55,54,55,54,23,54,23,22,23,22,23,49,33,54,55,49,54,55,6,7,35, +23,6,7,22,23,35,38,53,52,55,51,23,38,39,51,6,7,6,7,6,39,6,39,38,39,49,7,38,39,49,38,39, +51,22,23,49,51,54,55,51,6,7,6,7,49,1,96,3,186,3,1,1,3,186,3,152,8,8,123,3,3,123,11,116, +16,40,60,45,44,23,149,176,9,18,16,17,17,11,11,17,17,16,18,9,254,187,23,44,45,60,40,16,116,112,3,1, +1,3,123,8,8,123,64,18,9,176,9,18,16,17,17,12,10,17,17,16,4,60,45,44,23,116,16,40,130,40,16,116, +23,44,45,60,192,33,31,31,33,33,31,31,33,64,31,33,33,31,32,32,33,31,32,98,54,17,39,40,56,55,40,35, +16,15,1,1,15,16,35,40,55,56,40,39,17,54,98,32,31,33,32,32,31,33,33,31,255,40,55,55,40,35,16,15, +1,1,15,16,35,57,17,39,40,56,98,54,54,98,56,40,39,17,0,0,0,2,0,1,255,192,2,0,1,191,0,39, +0,48,0,0,1,38,39,49,38,15,1,35,53,55,54,39,38,39,38,7,6,7,6,7,6,23,7,6,21,20,23,22, +51,50,63,1,22,55,54,55,54,55,54,39,1,38,39,54,55,22,23,6,7,1,252,3,9,8,7,77,83,76,7,2, +3,9,36,40,47,32,32,8,7,12,178,21,21,21,28,28,23,178,36,40,48,35,35,12,11,9,254,84,22,2,2,22, +22,2,2,22,1,69,9,3,2,6,77,83,77,7,8,9,3,9,10,11,35,35,48,39,36,178,22,29,29,22,22,21, +178,12,6,8,32,33,46,42,35,254,179,2,22,22,2,2,22,22,2,0,0,6,0,0,255,240,2,0,1,160,0,17, +0,35,0,56,0,76,0,96,0,114,0,0,19,22,15,1,6,39,6,47,1,38,55,54,31,1,55,54,23,49,21,22, +15,1,6,39,6,47,1,38,55,54,31,1,55,54,23,49,55,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1, +34,39,38,53,49,21,52,55,49,54,59,1,50,23,22,21,20,7,6,43,1,34,39,38,53,7,52,55,49,54,51,33, +50,23,22,21,20,7,6,35,33,34,39,38,53,35,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,152, +15,13,72,7,10,11,7,40,14,14,17,17,22,55,16,18,15,13,72,7,10,11,7,40,14,14,17,17,22,55,16,18, +72,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,9,9,14,224,14,9,9,64,9,9, +14,1,32,14,9,9,9,9,14,254,224,14,9,9,160,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1, +154,16,18,80,8,1,2,9,40,16,17,14,14,22,61,15,13,160,16,18,80,8,1,2,9,40,16,17,14,14,22,61, +15,13,102,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9, +9,9,14,14,9,9,9,9,14,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0,0,1,0,0, +255,224,1,255,1,160,0,21,0,0,19,54,55,33,22,23,22,15,1,21,6,7,6,47,1,38,61,1,39,38,55,49, +4,11,25,1,176,25,11,10,16,182,1,17,17,16,64,13,183,15,10,1,137,22,1,1,22,23,19,224,127,19,10,8, +11,48,10,16,79,224,19,23,0,3,0,0,255,224,2,0,1,192,0,20,0,45,0,50,0,0,37,6,7,35,38,39, +53,35,21,22,23,22,23,33,54,55,54,55,53,35,21,55,35,53,38,39,38,39,35,6,7,6,7,21,35,6,7,6, +7,21,33,53,38,39,38,39,43,1,53,51,21,1,64,1,15,96,15,1,192,1,13,14,20,1,160,20,14,13,1,192, +144,80,1,13,14,20,160,20,14,13,1,80,20,14,13,1,2,0,1,13,14,20,128,160,160,112,15,1,1,15,48,144, +20,14,13,1,1,13,14,20,144,48,240,48,20,14,13,1,1,13,14,20,48,1,13,14,20,112,112,20,14,13,1,48, +48,0,0,0,0,1,0,0,255,192,2,0,1,192,0,76,0,0,37,20,15,1,6,35,34,39,38,39,53,35,21,51, +22,23,22,15,1,6,35,34,47,1,38,55,54,55,51,53,35,21,6,7,6,35,34,47,1,38,53,52,63,1,54,23, +22,23,21,51,53,35,38,39,38,63,1,54,51,50,31,1,22,7,6,7,35,21,51,53,54,55,54,31,1,22,21,2, +0,8,80,7,9,5,5,13,1,96,40,15,7,6,10,72,7,12,11,7,71,10,6,7,15,39,95,1,13,5,5,9, +7,80,8,8,80,12,14,13,1,95,39,15,7,6,10,71,8,10,11,7,72,10,6,7,15,40,97,1,13,14,12,80, +8,192,11,7,72,6,2,7,15,40,96,1,13,14,12,80,8,8,80,12,14,13,1,96,40,15,7,2,6,72,7,11, +11,7,72,9,5,7,15,40,96,1,13,14,12,80,8,8,80,12,14,13,1,96,40,15,7,5,9,72,7,11,0,0, +0,6,0,0,255,192,2,128,1,192,0,17,0,36,0,54,0,72,0,90,0,107,0,0,37,54,55,49,54,55,38,39, +38,39,6,7,6,7,20,23,22,31,1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,55,54,55, +49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,52,55,49,52,55,38,43,1,6,7,6,7,22,23,51,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,35,34,7,20,23,22,21,6,7,51,54,55, +38,39,38,39,1,64,44,29,29,1,1,29,30,43,44,29,29,1,29,30,44,50,100,60,40,40,2,8,8,12,1,72, +12,8,8,2,40,40,60,142,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,184,1,1,17,19,62,37, +25,25,1,2,16,199,32,1,56,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,168,62,19,17,1,1, +1,32,199,16,2,1,25,25,37,128,1,29,30,44,44,30,29,1,1,29,30,44,44,30,29,1,32,1,38,38,56,12, +7,8,8,7,12,56,38,38,1,192,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,56,6,6,2,2,8, +1,26,27,39,17,2,37,51,56,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,32,8,3,2,5,6,51, +37,2,17,39,27,26,1,0,0,2,0,18,255,213,2,110,1,171,0,55,0,111,0,0,19,54,51,49,50,23,22,23, +22,15,1,6,7,6,39,38,39,38,63,1,54,39,38,39,38,35,34,15,1,6,21,20,23,22,23,22,63,1,54,23, +22,23,22,7,6,15,1,6,39,38,39,38,53,52,63,1,5,6,35,49,34,39,38,39,38,63,1,54,55,54,23,22, +23,22,15,1,6,23,22,23,22,51,50,63,1,54,53,52,39,38,39,38,15,1,6,39,38,39,38,55,54,63,1,54, +23,22,23,22,21,20,15,1,173,44,57,58,44,38,4,5,31,1,8,12,13,11,11,2,2,7,1,17,2,2,21,25, +32,32,25,112,24,24,21,29,28,25,2,11,13,12,9,7,2,2,11,1,46,51,51,39,42,42,113,1,39,45,58,57, +45,38,4,4,31,1,7,13,12,12,11,2,2,7,1,17,2,2,21,25,32,32,25,113,23,23,22,29,28,25,2,11, +13,12,8,8,2,2,11,2,44,51,52,39,42,42,112,1,61,42,42,39,52,52,44,2,11,2,2,8,8,12,13,11, +2,25,28,29,22,23,23,113,24,32,33,25,20,3,2,17,2,7,2,3,10,12,12,13,8,1,31,4,5,37,45,57, +58,45,113,249,42,42,39,51,52,44,2,11,2,2,8,7,13,12,12,2,24,29,29,22,23,23,112,25,33,32,24,21, +3,2,17,1,8,3,2,10,12,12,13,8,1,31,4,5,37,45,57,58,45,112,0,0,0,1,0,0,255,224,2,128, +1,160,0,35,0,0,55,52,53,54,55,54,55,22,23,22,23,54,51,22,23,22,23,20,7,22,23,22,23,6,7,6, +7,33,38,39,38,39,54,55,54,55,96,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29,28,1,1,36, +37,54,254,144,61,41,40,2,1,26,26,43,248,4,4,68,45,45,2,1,21,22,36,16,1,27,27,41,18,17,9,35, +34,47,54,37,36,1,2,40,41,61,48,36,36,16,0,0,0,2,0,0,255,192,1,192,1,192,0,26,0,37,0,0, +37,39,53,51,54,55,53,38,39,35,6,7,21,22,23,51,23,7,6,23,22,23,33,54,55,54,39,37,55,54,61,1, +51,21,20,31,1,35,1,181,118,7,22,1,2,21,206,22,2,2,21,7,2,117,21,19,19,43,1,50,43,19,19,21, +254,212,48,7,64,6,48,173,44,189,151,2,22,16,22,2,2,22,16,22,2,151,189,37,34,35,2,2,35,34,37,84, +78,8,10,160,160,10,8,78,0,4,0,0,255,192,1,248,1,192,0,44,0,62,0,80,0,90,0,0,1,54,51,49, +50,23,22,7,1,22,21,6,7,6,7,38,39,38,39,54,55,54,55,22,23,55,39,6,35,38,39,38,39,54,55,54, +55,22,23,22,23,20,7,23,55,7,38,39,49,38,39,6,7,6,7,22,23,22,51,50,55,54,55,3,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,63,1,23,22,7,6,35,34,47,1,1,141,22,29,29,22,11,11,254, +230,7,1,32,31,48,48,31,32,1,1,32,31,48,22,19,38,38,19,22,48,31,32,1,1,32,31,48,48,31,32,1, +7,38,142,237,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,48,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,167,64,156,11,11,22,29,29,22,118,1,141,21,21,13,13,254,229,18,22,48,31,32,1,1,32,31, +48,48,32,32,1,1,8,41,38,7,1,32,31,48,48,31,32,1,1,32,31,48,22,19,38,140,60,20,14,13,1,1, +13,14,20,21,13,14,14,13,21,254,175,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,105,64,156,13,13, +21,21,118,0,0,3,0,0,255,192,2,0,1,192,0,22,0,26,0,49,0,0,1,53,35,6,7,6,7,17,22,23, +22,23,51,54,55,54,55,53,35,34,39,38,53,55,21,51,39,3,53,35,6,7,6,7,17,22,23,22,23,51,54,55, +54,55,53,35,38,39,38,39,1,128,112,20,14,13,1,1,13,14,20,192,20,14,13,1,95,14,9,10,32,96,96,224, +144,20,14,13,1,1,13,14,20,192,20,14,13,1,32,27,18,18,1,1,96,96,1,13,14,20,254,224,20,14,13,1, +1,13,14,20,208,9,9,14,96,96,96,254,160,224,1,13,14,20,254,224,20,14,13,1,1,13,14,20,48,1,18,18, +27,0,0,0,0,1,0,4,255,196,1,188,1,183,0,70,0,0,1,38,35,49,34,15,1,6,21,20,23,22,51,50, +63,1,54,51,50,23,22,21,20,15,1,6,35,34,39,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,35,34, +39,38,53,52,63,1,54,51,50,23,22,21,20,15,1,6,23,22,63,1,54,53,52,39,49,1,108,19,25,25,19,184, +32,32,33,43,43,33,152,9,11,11,9,8,8,152,51,65,65,51,48,48,184,37,47,47,37,35,35,176,23,29,29,23, +21,21,144,9,11,11,9,8,8,144,10,10,12,12,176,19,19,1,108,19,19,184,33,43,43,33,32,32,152,8,8,9, +11,11,9,152,48,48,51,65,65,51,184,35,35,37,47,47,37,176,21,21,23,29,29,23,144,8,8,9,11,11,9,144, +12,12,10,10,176,19,25,25,19,0,0,0,0,3,0,0,255,224,1,192,1,160,0,23,0,41,0,54,0,0,1,39, +38,39,38,43,1,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,38,39,3,38,39,49,38,39,54,55,54,55, +22,23,22,23,6,7,6,7,55,6,7,35,38,39,53,54,55,51,22,23,21,1,177,84,5,10,9,9,252,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,1,14,209,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,1, +15,224,15,1,1,15,224,15,1,1,63,84,5,4,4,1,18,18,27,254,192,27,18,18,1,1,18,18,27,252,19,16, +254,225,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,208,15,1,1,15,96,15,1,1,15,96,0,0,0, +0,1,0,0,255,224,1,192,1,160,0,21,0,0,19,54,55,49,54,55,33,22,23,22,23,17,6,7,6,7,33,38, +39,38,39,17,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,96,27,18,18,1,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,0,0,3,0,0,0,0,1,192,1,128,0,19,0,39,0,58, +0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,21,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,5,33,34,39,38,53,52,55,54,51,33,50,23,22,21,20,7,6,35,0,9,9, +14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,160, +254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,1,96,14,9,9,9,9,14,14,9,9,9,9,14,160,14, +9,9,9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,16,255,240,2,0, +1,144,0,17,0,37,0,57,0,77,0,95,0,113,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39, +38,39,37,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35, +33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,5,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,55,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23, +22,23,16,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,208,14,9,9,9,9,14,254,224,14,9,9, +9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9,9,9,14,1,32,14,9,9,9,9,14,254,224,14,9,9, +9,9,14,1,32,254,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,32,9,9,14,14,9, +9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9, +9,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,0,0,5,0,39,255,224,2,32,1,160,0,31,0,63,0,83,0,103,0,123,0,0,19,52,55,49,54,59, +1,22,23,21,51,22,23,6,7,35,34,39,38,53,52,55,54,59,1,53,35,34,39,38,53,49,19,38,15,1,6,39, +38,63,1,54,55,54,23,22,7,20,15,1,51,22,23,6,7,35,38,39,38,63,1,54,39,49,1,50,23,49,22,21, +20,7,6,35,33,34,39,38,53,52,55,54,51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54, +51,33,21,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,55,7,7,10,32,23,1,16,23,1, +1,23,80,10,7,7,7,7,10,16,8,10,7,7,64,13,11,11,15,19,17,11,12,19,29,29,22,16,1,16,35,33, +22,2,2,22,88,15,7,6,10,72,8,7,1,137,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9, +9,9,9,14,255,0,14,9,9,9,9,14,1,0,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,1,136, +10,7,7,2,22,120,2,22,22,2,7,7,10,10,7,7,96,7,7,10,254,227,11,12,16,17,11,15,19,15,26,1, +1,23,18,24,24,18,38,2,22,22,2,1,13,15,11,78,10,11,1,21,9,9,14,14,9,9,9,9,14,14,9,9, +160,9,9,14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,2,0,0, +255,224,2,0,1,160,0,27,0,67,0,0,37,22,7,6,7,6,39,38,39,38,7,6,7,6,23,22,23,22,23,22, +23,22,55,54,55,54,39,35,55,35,38,39,38,39,38,55,54,55,54,55,54,23,22,55,54,55,54,39,38,39,38,7, +6,7,6,23,22,23,35,6,7,22,23,33,54,55,38,39,1,76,25,6,4,21,28,49,50,59,13,11,12,6,4,4, +5,13,25,42,43,48,45,38,47,10,5,9,78,156,176,25,22,63,24,23,6,4,19,14,37,36,68,13,11,12,3,4, +7,6,13,138,69,42,9,6,11,12,22,113,22,2,2,22,1,208,22,2,2,22,128,17,31,26,11,15,5,6,24,4, +5,4,13,13,11,12,6,10,12,12,1,1,20,26,56,35,24,80,8,7,17,17,17,30,22,12,11,3,3,17,3,6, +6,14,13,11,11,4,36,44,28,49,38,26,26,17,2,21,21,2,2,21,21,2,0,0,0,2,0,0,255,192,1,192, +1,192,0,18,0,77,0,0,37,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,1,51,21,22,23, +22,23,54,55,54,55,53,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,59,1,21,6,7,6,7,38, +39,38,39,53,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,1,160,254,128,14,9,9,9,9,14, +1,128,14,9,9,9,9,14,254,144,16,2,45,45,68,68,45,45,2,16,14,9,9,9,9,14,96,14,9,9,9,9, +14,16,1,27,27,41,41,27,27,1,16,14,9,9,9,9,14,96,14,9,9,9,9,14,0,9,9,14,14,9,9,9, +9,14,14,9,9,1,128,160,68,45,44,2,2,45,45,67,160,9,9,14,14,8,9,9,9,14,14,9,9,160,41,26, +27,1,1,27,28,40,160,9,9,14,14,9,9,9,9,13,13,10,10,0,0,5,0,0,255,224,2,0,1,160,0,21, +0,26,0,31,0,36,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33, +7,53,35,21,51,7,21,51,53,35,23,51,53,35,21,55,53,35,21,51,1,192,27,18,18,1,1,18,18,27,254,128, +27,18,18,1,1,18,18,27,1,128,224,160,160,160,160,160,224,160,160,160,160,160,1,160,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,224,96,96,64,96,96,96,96,96,160,96,96,0,2,0,0,255,192,2,0, +1,192,0,21,0,26,0,0,23,38,53,49,52,55,1,54,51,50,31,1,22,21,20,7,1,6,35,34,47,1,1,55, +39,7,23,14,14,14,1,125,15,19,20,14,35,14,14,254,131,15,19,20,14,35,1,78,105,24,105,24,15,14,20,19, +15,1,125,14,14,35,14,20,19,15,254,131,14,14,35,1,19,105,24,105,24,0,0,0,0,4,0,0,255,192,2,128, +1,192,0,50,0,56,0,74,0,92,0,0,1,22,23,49,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7, +6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,54,55,54,55,33,23, +21,51,53,39,35,5,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,1,112,20,14,13,1,51,25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41, +27,27,1,128,1,27,27,41,41,27,27,1,16,20,14,13,1,1,13,14,20,1,64,48,128,77,51,255,0,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1, +192,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27, +41,1,13,14,20,1,64,20,14,13,1,160,96,19,77,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0,0,6,0,0,0,0,2,64,1,128,0,21, +0,29,0,37,0,44,0,51,0,69,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54, +55,33,1,38,39,49,38,39,21,51,39,54,55,49,54,55,35,21,5,53,6,7,6,7,51,17,35,22,23,22,23,53, +7,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,0,27,18,18,1,1,18,18,27,254,64,27,18, +18,1,1,18,18,27,1,192,254,128,1,18,18,27,64,64,27,18,18,1,64,1,192,27,18,18,1,64,64,1,18,18, +27,224,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,128,1,18,18,27,255,0,27,18,18,1,1,18, +18,27,1,0,27,18,18,1,254,192,27,18,18,1,64,192,1,18,18,27,64,192,64,1,18,18,27,1,0,27,18,18, +1,64,224,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,1,0,0,0,64,1,63,1,0,0,15, +0,0,37,7,6,35,34,47,1,38,55,54,55,51,22,23,22,7,1,55,127,11,13,13,10,127,15,7,9,21,255,21, +9,7,13,201,128,9,9,128,16,19,19,1,1,19,19,16,0,1,0,0,0,128,1,63,1,64,0,15,0,0,63,1, +54,51,50,31,1,22,7,6,7,35,38,39,38,55,9,127,11,13,13,10,127,14,7,8,22,255,21,9,7,14,183,128, +9,9,128,16,19,19,1,1,19,19,16,0,0,1,0,0,0,32,0,192,1,96,0,15,0,0,55,39,38,53,52,63, +1,54,23,22,23,21,6,7,6,39,137,128,9,9,128,16,19,19,1,1,19,19,16,41,127,11,14,13,10,127,14,7, +9,21,255,21,9,7,13,0,0,1,0,64,0,33,1,0,1,96,0,15,0,0,19,23,22,21,20,15,1,6,39,38, +39,53,54,55,54,23,119,128,9,9,128,16,19,19,1,1,19,19,16,1,87,128,11,11,12,11,127,14,7,8,21,255, +21,9,7,14,0,3,0,0,255,224,2,0,1,160,0,21,0,26,0,31,0,0,19,54,55,49,54,55,33,22,23,22, +23,17,6,7,6,7,33,38,39,38,39,17,19,51,17,35,17,1,35,17,51,17,0,1,18,18,27,1,128,27,18,18, +1,1,18,18,27,254,128,27,18,18,1,64,160,160,1,128,160,160,1,96,27,18,18,1,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,254,192,1,0,255,0,1,0,255,0,1,0,0,2,0,0,255,224,1,64,1,160,0,15, +0,31,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23,22,23,5,33,6,7,6,31,1,22,51,50,63,1, +54,39,38,39,28,1,8,19,7,6,12,132,9,11,11,8,133,12,6,7,19,1,8,254,248,19,7,6,12,133,7,12, +11,9,132,12,6,7,19,224,1,16,16,14,137,8,8,137,14,16,16,1,64,1,16,16,14,137,8,8,137,14,16,16, +1,0,0,0,0,1,0,0,255,224,1,64,0,160,0,15,0,0,37,7,6,35,34,47,1,38,55,54,55,33,22,23, +22,7,1,56,132,9,11,11,8,133,12,6,7,19,1,8,19,7,6,12,113,137,8,8,137,14,16,16,1,1,16,16, +14,0,0,0,0,1,0,0,0,224,1,64,1,160,0,15,0,0,55,33,54,55,54,47,1,38,35,34,15,1,6,23, +22,23,28,1,8,19,7,6,12,132,9,11,11,8,133,12,6,7,19,224,1,16,16,14,137,8,8,137,14,16,16,1, +0,2,0,0,0,0,2,0,1,128,0,18,0,37,0,0,1,22,23,49,22,23,6,15,1,6,47,1,38,39,54,55, +54,55,33,3,22,51,49,50,63,1,21,6,7,6,7,33,38,39,38,39,53,23,1,208,20,14,13,1,1,18,218,19, +19,218,18,1,1,13,14,20,1,160,246,17,21,21,17,218,1,18,18,27,254,128,27,18,18,1,218,1,128,1,13,14, +20,24,14,164,12,12,164,14,24,20,14,13,1,254,237,13,13,163,208,27,18,18,1,1,18,18,27,208,163,0,0,0, +0,1,0,16,255,224,1,224,1,176,0,66,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,55,54,55,54, +23,22,51,54,55,54,55,38,39,38,39,34,7,6,7,51,50,23,22,21,20,7,6,43,1,34,39,38,61,1,52,55, +54,51,50,23,22,29,1,54,55,54,51,22,23,22,23,22,23,1,224,1,30,30,50,50,63,74,60,11,2,1,8,8, +13,12,11,43,53,68,45,45,2,2,45,45,68,38,33,33,23,63,14,9,9,9,9,14,144,14,9,9,9,9,14,14, +9,9,32,46,45,53,63,50,50,30,30,1,192,62,51,50,30,30,1,1,44,8,13,13,11,10,2,2,8,32,2,45, +45,68,68,45,45,2,17,17,30,9,9,14,14,9,9,9,9,14,144,14,9,9,9,9,14,70,40,23,23,1,30,30, +50,51,62,0,0,2,0,0,255,192,2,0,1,192,0,44,0,67,0,0,37,52,47,1,38,35,34,15,1,39,55,54, +53,52,47,1,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,23,7,6,21,20,31,1,22,51,50,63,1,54, +53,5,7,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,54,53,52,39,55,39,2,0,7,23,7,9,9,7, +6,114,5,7,7,22,8,9,10,7,125,7,7,23,7,9,10,6,6,113,6,7,7,23,7,10,9,8,124,9,254,228, +59,10,12,13,10,115,9,9,46,9,13,13,10,115,9,9,58,45,232,9,8,22,7,7,5,113,5,8,8,10,7,22, +9,7,125,7,10,9,7,23,7,7,6,114,5,8,8,9,7,23,7,7,125,5,10,22,59,9,9,115,10,13,12,10, +46,9,9,115,10,13,12,10,59,46,0,0,0,1,0,0,255,192,1,127,1,192,0,22,0,0,55,51,22,23,22,7, +5,6,39,38,63,1,35,38,39,38,55,37,54,23,22,15,1,241,111,22,7,8,16,255,0,19,21,19,9,77,113,20, +9,7,16,1,0,19,21,19,9,76,224,1,20,20,15,224,15,13,16,23,179,1,20,20,15,224,15,13,16,23,179,0, +0,1,0,0,255,224,2,64,1,160,0,109,0,0,19,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,21, +51,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,38,39,35,21, +51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,35,6,7,21,51,22,23,22,23,21, +6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,51,53,35,38,39,38,39,53,208,1,13,14, +20,64,20,14,13,1,1,13,14,20,8,152,24,16,15,1,8,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13, +14,20,8,1,7,152,8,20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,8,152,7,1,8,20,14,13, +1,1,13,14,20,64,20,14,13,1,1,13,14,20,8,1,15,16,24,152,8,20,14,13,1,1,112,20,14,13,1,1, +13,14,20,64,20,14,13,1,40,1,15,16,24,32,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1, +32,7,1,40,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,40,1,7,32,1,13,14,20,64,20, +14,13,1,1,13,14,20,64,20,14,13,1,32,24,16,15,1,40,1,13,14,20,64,0,0,2,0,0,255,192,2,64, +1,192,0,26,0,78,0,0,55,21,6,7,38,39,38,39,38,7,6,7,6,23,22,23,22,51,54,55,54,55,53,38, +39,6,7,37,38,39,49,38,39,53,52,39,38,35,34,7,6,29,1,6,7,6,7,6,23,22,55,54,23,22,23,22, +55,54,55,54,55,22,23,22,23,22,23,22,49,22,55,54,55,54,23,22,55,54,39,255,1,15,12,3,5,11,12,13, +13,5,6,5,9,21,20,25,35,22,23,1,14,18,18,15,1,65,24,71,71,90,9,9,14,14,9,10,90,70,71,24, +1,6,6,8,39,41,40,39,10,9,15,21,21,33,27,19,19,11,11,3,1,9,11,38,41,40,39,9,6,6,1,146, +130,15,1,1,10,12,6,5,4,5,11,12,13,24,14,15,1,23,22,35,130,13,1,2,13,21,103,59,59,10,18,14, +9,9,9,9,14,18,10,59,59,103,8,5,5,7,42,7,6,66,14,14,28,22,22,1,1,15,15,17,16,7,2,14, +14,66,6,7,42,7,5,5,8,0,0,0,0,4,0,0,255,192,2,0,1,192,0,27,0,36,0,40,0,63,0,0, +1,53,38,39,38,39,35,38,39,6,7,35,6,7,6,7,17,22,23,22,23,51,17,54,55,54,55,51,39,38,39,54, +55,22,23,6,7,5,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23,51,54,55,54,55,53,35,34,39,38,53, +1,64,1,13,14,20,57,18,37,37,18,57,20,14,13,1,1,13,14,20,144,1,22,23,34,48,160,22,2,2,22,22, +2,2,22,1,0,96,96,32,112,20,14,13,1,1,13,14,20,192,20,14,13,1,96,14,9,9,1,96,16,20,14,13, +1,30,2,2,30,1,13,14,20,254,192,20,14,13,1,1,16,34,23,22,1,8,2,22,22,2,2,22,22,2,40,96, +96,96,96,1,13,14,20,254,224,20,14,13,1,1,13,14,20,208,9,9,14,0,0,0,0,3,0,16,255,192,1,112, +1,192,0,14,0,45,0,63,0,0,23,20,31,1,22,23,51,54,63,1,54,55,53,35,21,19,6,7,49,6,7,22, +23,22,23,22,23,20,49,48,49,51,48,49,48,53,54,55,54,55,54,55,38,39,38,39,23,6,7,49,6,7,6,7, +38,39,54,55,54,55,22,23,6,7,112,5,18,10,16,62,16,10,18,4,1,160,79,77,49,48,1,1,43,13,15,16, +8,160,8,16,15,13,43,1,2,50,50,75,1,34,23,22,1,1,15,15,1,1,32,31,48,15,1,1,15,6,10,8, +26,13,1,1,13,26,8,10,39,39,1,198,3,50,51,71,68,48,15,25,26,25,1,1,25,26,25,15,47,69,74,50, +49,2,96,1,22,23,33,16,1,1,15,47,32,31,1,1,15,14,1,0,0,2,0,0,255,192,2,0,1,192,0,34, +0,69,0,0,19,33,7,6,21,20,23,22,51,50,63,1,54,53,52,47,1,38,35,34,7,6,21,20,31,1,33,34, +7,6,21,20,23,22,51,5,33,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47, +1,33,50,55,54,53,52,39,38,35,32,1,115,58,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,58,254, +141,14,9,9,9,9,14,1,192,254,141,58,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,58,1,115,14, +9,9,9,9,14,1,16,57,10,13,13,10,9,9,112,10,13,13,10,112,9,9,10,13,13,10,57,9,9,14,14,9, +9,160,57,10,13,13,10,9,9,112,10,13,13,10,112,9,9,10,13,13,10,57,9,9,14,14,9,9,0,2,0,0, +255,224,2,128,1,160,0,36,0,57,0,0,23,38,39,49,38,39,54,55,54,55,52,53,54,55,54,55,22,23,22,23, +54,51,22,23,22,23,20,7,22,23,22,23,6,7,6,7,33,55,22,63,1,54,39,38,15,1,53,38,39,6,7,21, +39,38,7,6,31,1,144,61,41,40,2,1,26,26,43,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29, +28,1,1,36,37,54,254,144,159,17,16,80,15,15,16,17,39,2,22,22,2,40,16,17,14,14,80,32,2,40,41,61, +48,36,36,16,4,4,68,45,45,2,1,21,22,36,16,1,27,27,41,18,17,9,35,34,47,54,37,36,1,88,15,15, +80,16,17,14,14,39,134,22,2,2,22,134,39,14,14,17,16,80,0,0,0,2,0,0,255,224,2,128,1,160,0,36, +0,57,0,0,23,38,39,49,38,39,54,55,54,55,52,53,54,55,54,55,22,23,22,23,54,51,22,23,22,23,20,7, +22,23,22,23,6,7,6,7,33,55,6,23,22,63,1,21,22,23,54,55,53,23,22,55,54,47,1,38,15,1,144,61, +41,40,2,1,26,26,43,2,45,45,68,45,36,36,22,23,30,41,27,27,1,6,44,29,28,1,1,36,37,54,254,144, +79,14,14,17,16,40,2,22,22,2,39,17,16,15,15,80,16,17,80,32,2,40,41,61,48,36,36,16,4,4,68,45, +45,2,1,21,22,36,16,1,27,27,41,18,17,9,35,34,47,54,37,36,1,217,17,16,15,15,38,134,22,2,2,22, +134,38,15,15,16,17,80,14,14,80,0,0,0,3,0,0,255,192,1,192,1,192,0,17,0,95,0,104,0,0,19,54, +55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,6,7,49,6,21,22,23,22,23,54,55,54,55,52,39, +38,39,53,54,59,1,50,23,21,6,7,6,29,1,22,23,51,54,55,38,39,53,52,55,54,51,50,23,22,29,1,6, +7,22,23,51,54,55,53,52,39,38,39,53,22,23,22,23,20,7,6,35,33,34,39,38,53,54,55,54,55,21,7,54, +55,22,23,6,7,38,39,96,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,32,18,11,11,1,15,16,24, +24,16,15,1,11,11,18,9,9,92,8,10,21,13,14,1,15,16,15,1,1,15,9,9,14,14,9,9,15,1,1,15, +16,15,1,14,13,21,56,35,36,1,9,8,13,254,124,13,8,9,1,35,35,57,8,2,22,22,2,2,22,22,2,1, +64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,242,6,14,15,19,24,16,15,1,1,15,16,24,19,15, +14,6,65,1,1,57,6,16,17,23,40,15,1,1,15,15,1,24,14,9,9,9,9,14,24,1,15,15,1,1,15,40, +23,17,16,6,51,18,46,45,62,13,8,9,9,8,13,62,45,46,18,59,54,22,2,2,22,22,2,2,22,0,0,0, +0,2,0,32,255,192,2,48,1,192,0,73,0,82,0,0,1,6,7,49,6,7,20,23,22,23,21,6,7,6,7,38, +39,38,39,54,55,54,55,53,38,47,1,38,15,1,6,31,1,21,6,7,6,7,38,39,38,39,53,55,54,47,1,38, +15,1,6,7,21,22,23,22,23,22,23,22,23,54,55,54,55,53,54,55,54,53,38,39,38,39,21,38,39,54,55,22, +23,6,7,1,224,34,23,22,1,13,14,21,1,32,31,48,46,31,32,3,55,36,36,1,1,18,63,22,6,4,2,21, +31,1,27,27,40,41,28,27,1,31,21,3,3,6,22,63,18,1,1,36,35,56,4,49,50,73,75,49,50,2,22,13, +13,1,22,23,34,22,2,2,22,22,2,2,22,1,80,1,22,23,34,25,19,20,9,79,44,29,30,1,1,28,28,42, +13,42,43,60,154,19,5,13,2,21,16,22,6,6,122,40,28,27,2,1,27,27,41,123,6,6,22,16,21,3,12,5, +19,155,59,43,43,12,69,46,46,2,2,47,48,71,79,9,20,19,25,34,23,22,1,104,2,22,22,2,2,22,22,2, +0,4,0,0,255,224,2,0,1,192,0,13,0,22,0,35,0,48,0,0,19,54,55,49,54,55,51,22,23,22,23,17, +33,17,23,51,53,38,39,35,6,7,21,35,51,17,35,38,39,38,39,17,54,55,54,55,1,35,17,51,22,23,22,23, +17,6,7,6,7,128,1,15,16,24,144,24,16,15,1,255,0,48,160,1,7,144,7,1,112,32,32,27,18,18,1,1, +18,18,27,1,128,32,32,27,18,18,1,1,18,18,27,1,136,24,16,15,1,1,15,16,24,254,88,1,168,40,40,7, +1,1,7,40,254,128,1,18,18,27,1,0,27,18,18,1,254,128,1,128,1,18,18,27,255,0,27,18,18,1,0,0, +0,2,0,0,255,192,1,192,1,192,0,36,0,46,0,0,1,21,22,23,22,23,21,22,31,1,22,7,6,7,33,38, +39,38,63,1,54,55,53,54,55,54,55,53,52,55,54,51,50,23,22,21,49,3,34,39,38,53,51,20,7,6,35,1, +0,56,35,36,1,1,48,7,13,8,9,20,254,128,20,9,8,13,8,47,1,1,35,36,56,9,9,14,14,9,9,32, +26,19,19,128,19,19,26,1,160,19,12,43,43,59,19,73,54,9,15,19,18,1,1,18,19,15,9,54,73,19,59,43, +43,12,19,14,9,9,9,9,14,254,32,19,19,26,26,19,19,0,0,0,0,3,0,0,255,224,2,128,1,160,0,22, +0,34,0,49,0,0,1,33,6,7,21,22,23,22,23,51,54,55,54,55,51,54,55,54,55,38,39,38,39,21,35,53, +51,22,23,22,23,6,7,6,7,23,33,6,7,22,23,22,23,33,54,55,54,55,38,39,2,0,254,120,22,2,1,27, +27,41,192,41,27,27,1,32,54,36,37,1,1,37,36,54,32,32,27,18,18,1,1,18,18,27,48,253,224,15,1,1, +13,14,20,1,224,20,14,13,1,1,15,1,160,2,22,232,41,27,27,1,1,27,27,41,1,37,36,54,54,36,37,1, +192,128,1,18,18,27,27,18,18,1,192,1,15,20,14,13,1,1,13,14,20,15,1,0,0,4,0,0,255,192,2,128, +1,192,0,24,0,53,0,80,0,108,0,0,19,54,55,49,54,55,51,22,23,22,23,17,35,53,38,39,38,39,6,7, +6,7,21,35,17,23,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38, +39,35,7,17,35,38,39,38,39,53,51,54,55,38,39,35,53,51,54,55,38,39,35,53,54,55,54,55,51,33,22,23, +49,22,23,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,6,7,6,7,35,17,51,192,1,13,14,20,160,20, +14,13,1,80,1,13,14,20,20,14,13,1,80,120,15,1,24,15,1,1,15,24,1,15,16,15,1,24,15,1,1,15, +24,1,15,16,152,112,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,112,1,176,20,14,13, +1,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,112,112,1,144,20,14,13,1,1,13,14,20,254,48,80, +20,14,13,1,1,13,14,20,80,1,208,16,1,15,24,1,15,16,15,1,24,15,1,1,15,24,1,15,16,15,1,24, +15,1,32,254,96,1,13,14,20,144,1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,48,1,15,15, +1,64,1,15,15,1,144,20,14,13,1,1,160,0,0,0,0,5,0,0,255,192,2,128,1,192,0,50,0,56,0,74, +0,92,0,121,0,0,1,22,23,49,22,23,21,51,50,31,1,22,29,1,50,23,22,21,20,7,6,43,1,6,7,6, +7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,38,39,38,39,17,54,55,54,55,33,23,21,51,53,39,35,5, +6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22, +23,22,23,1,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,35,6,7,21, +1,112,20,14,13,1,51,25,20,77,19,14,9,9,9,9,14,32,1,27,27,41,41,27,27,1,128,1,27,27,41,41, +27,27,1,16,20,14,13,1,1,13,14,20,1,64,48,128,77,51,255,0,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,1,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,144,1,15,48,1,15,32,15,1, +48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,192,1,13,14,20,48,19,77,19,26,115,9,9,14,14,9,9, +41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,13,14,20,1,64,20,14,13,1,160,96,19,77,208,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +1,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,0,5,0,0,255,224,2,0, +1,192,0,12,0,25,0,43,0,48,0,77,0,0,19,17,22,23,22,23,51,17,35,6,7,6,7,37,35,17,51,54, +55,54,55,17,38,39,38,47,1,38,39,49,38,39,35,6,7,6,7,21,35,17,33,17,35,53,35,51,21,35,53,19, +6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,0,1,13,14, +20,16,16,20,14,13,1,1,208,16,16,20,14,13,1,1,13,14,20,80,1,13,14,20,160,20,14,13,1,32,1,64, +32,208,160,160,176,1,7,56,1,7,48,7,1,56,7,1,1,7,56,1,7,48,7,1,56,7,1,1,48,254,224,20, +14,13,1,1,128,1,13,14,20,48,254,128,1,13,14,20,1,32,20,14,13,1,48,20,14,13,1,1,13,14,20,48, +254,128,1,128,48,48,48,254,248,7,1,56,7,1,1,7,56,1,7,48,7,1,56,7,1,1,7,56,1,7,48,0, +0,2,0,0,255,192,2,128,1,192,0,67,0,78,0,0,19,54,55,51,22,23,6,7,35,23,51,50,31,1,22,23, +6,15,1,6,43,1,7,51,22,23,6,7,35,38,39,54,55,51,53,35,7,6,43,1,34,39,38,61,1,34,39,38, +53,52,55,54,51,53,52,55,54,59,1,50,31,1,51,53,35,38,39,49,7,6,7,22,23,51,54,55,38,39,35,160, +2,22,112,22,2,2,22,16,104,116,12,11,102,14,1,1,14,102,11,12,116,104,16,22,2,2,22,112,22,2,2,22, +8,32,55,9,13,19,14,9,9,14,9,9,9,9,14,9,9,14,19,13,9,55,32,8,22,2,80,15,1,1,15,64, +15,1,1,15,64,1,168,22,2,2,22,22,2,144,4,38,7,15,15,7,38,4,144,2,22,22,2,2,22,22,2,144, +55,9,9,9,14,64,9,9,14,14,9,9,64,14,9,9,9,55,144,2,22,216,1,15,15,1,1,15,15,1,0,0, +0,5,0,32,255,224,2,0,1,160,0,32,0,43,0,54,0,65,0,74,0,0,1,35,53,52,39,38,35,33,34,7, +6,21,17,22,23,22,23,51,54,55,54,55,53,55,54,55,54,61,1,38,39,38,39,1,6,7,38,39,53,54,55,22, +23,21,51,6,7,38,39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21,55,20,15,1,53,51,22,23, +21,1,176,48,9,9,14,254,224,14,9,9,1,18,18,27,224,27,18,18,1,81,22,12,13,1,22,23,34,254,240,1, +15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,160,9,55,48,15,1,1, +96,32,14,9,9,9,9,14,254,160,27,18,18,1,1,18,18,27,32,36,10,20,19,24,99,34,23,22,1,254,240,15, +1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,93,10,5, +24,154,1,15,99,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,45,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,38,39,53,35,21,6,7,38,39,53,54,55,22,23,21,51, +53,54,55,22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,48,2,22,22, +2,128,2,22,22,2,2,22,22,2,128,2,22,22,2,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,254,184,22,2,2,22,80,80,22,2,2,22,208,22,2,2,22,80,80,22,2,2,22,208,0,0,0, +0,2,0,0,255,224,1,192,1,160,0,21,0,46,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39, +17,54,55,54,55,33,3,54,55,53,51,54,55,38,39,35,53,38,39,6,7,21,35,6,7,22,23,51,21,22,23,1, +128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,160,22,2,64,22,2,2,22,64,2,22, +22,2,64,22,2,2,22,64,2,22,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +254,176,2,22,64,2,22,22,2,64,22,2,2,22,64,2,22,22,2,64,22,2,0,0,0,2,0,0,0,0,1,160, +1,128,0,24,0,49,0,0,63,1,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47, +1,51,55,54,53,52,39,38,35,34,15,1,6,21,20,31,1,22,51,50,55,54,53,52,47,1,77,138,9,9,10,13, +13,10,160,9,9,160,10,13,13,10,9,9,138,192,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9,138, +192,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,13, +10,160,9,9,10,13,13,10,137,0,0,0,0,2,0,32,0,0,1,192,1,128,0,24,0,49,0,0,55,39,38,35, +34,7,6,21,20,31,1,7,6,21,20,23,22,51,50,63,1,54,53,52,39,51,39,38,35,34,7,6,21,20,31,1, +7,6,21,20,23,22,51,50,63,1,54,53,52,39,247,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,9, +9,192,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,9,9,215,160,9,9,10,13,13,10,137,137,10,13, +13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,13,10,0,0,0, +0,2,0,0,0,0,1,128,1,160,0,24,0,50,0,0,63,1,23,22,51,50,55,54,53,52,47,1,38,35,34,15, +1,6,21,20,23,22,51,50,63,1,38,35,49,34,15,1,6,21,20,23,22,51,50,63,1,23,22,51,50,55,54,53, +52,47,1,55,137,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10,160,10,13,13,10,160,9,9, +10,13,13,10,137,137,10,13,13,10,9,9,160,201,138,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,9, +14,9,9,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,0,0,2,0,0,255,224,1,128,1,128,0,24, +0,49,0,0,55,22,51,50,63,1,54,53,52,39,38,35,34,15,1,39,38,35,34,7,6,21,20,31,1,55,7,39, +38,35,34,7,6,21,20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,169,10,13,13,10,160,9,9,10,13, +13,10,137,137,10,13,13,10,9,9,160,160,137,137,10,13,13,10,9,9,160,10,13,13,10,160,9,9,10,13,13,10, +169,9,9,160,10,13,13,10,9,9,138,138,9,9,10,13,13,10,160,14,138,138,9,9,10,13,13,10,160,9,9,160, +10,13,13,10,9,9,0,0,0,1,0,0,0,0,0,224,1,128,0,24,0,0,55,34,47,1,38,53,52,63,1,54, +51,50,23,22,21,20,15,1,23,22,21,20,7,6,35,192,13,10,160,9,9,160,10,13,13,10,9,9,138,138,9,9, +10,13,0,9,160,10,13,13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,0,0,1,0,32,0,0,1,0, +1,128,0,24,0,0,55,34,39,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,22,21,20,15,1,6,35,64, +13,10,9,9,138,138,9,9,10,13,13,10,160,9,9,160,10,13,0,9,10,13,13,10,137,137,10,13,13,10,9,9, +160,10,13,13,10,160,9,0,0,1,0,0,0,96,1,128,1,64,0,24,0,0,37,34,47,1,7,6,35,34,39,38, +53,52,63,1,54,51,50,31,1,22,21,20,7,6,35,1,96,13,10,137,137,10,13,13,10,9,9,160,10,13,13,10, +160,9,9,10,13,96,9,138,138,9,9,10,13,13,10,160,9,9,160,10,13,13,10,9,0,1,0,0,0,64,1,128, +1,32,0,24,0,0,55,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,15,1,6,35,192, +13,10,160,9,9,10,13,13,10,137,137,10,13,13,10,9,9,160,10,13,64,9,160,10,13,13,10,9,9,138,138,9, +9,10,13,13,10,160,9,0,0,2,0,0,255,225,2,128,1,160,0,16,0,33,0,0,19,33,17,51,17,38,39,38, +39,33,6,7,6,7,17,51,17,1,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,128,1,128,64,1,13, +14,20,254,96,20,14,13,1,64,1,240,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,1,96,255,0,1, +16,20,14,13,1,1,13,14,20,254,240,1,0,254,225,2,14,16,27,18,18,1,1,18,18,27,16,14,2,0,0,0, +0,2,0,0,255,192,1,192,1,192,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,1,18,18,27,160,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,18,18,27, +254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,48,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,16,255,192,1,112,1,192,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,64,255,0,20,14,13,1,1, +13,14,20,1,0,20,14,13,1,1,13,14,20,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,13,14,20, +254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,48,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,0,0,32,1,192,1,96,0,32,0,65,0,0,55,34,7,53,54,55,54,55,50,55,54,53,52,39,38,35, +6,7,6,7,21,22,23,22,23,54,55,54,55,38,39,38,39,33,34,7,53,54,55,54,55,50,55,54,53,52,39,38, +35,6,7,6,7,21,22,23,22,23,54,55,54,55,38,39,38,39,96,17,15,1,18,18,27,14,9,9,9,9,14,54, +36,37,1,1,27,27,41,41,27,27,1,1,27,27,41,1,0,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37, +1,1,27,27,41,41,27,27,1,1,27,27,41,224,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41, +27,27,1,1,27,27,41,41,27,27,1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41,27,27,1, +1,27,27,41,41,27,27,1,0,2,0,0,0,32,1,192,1,96,0,33,0,67,0,0,19,6,7,49,6,7,22,23, +22,23,50,55,21,6,7,6,7,34,7,6,21,20,23,22,51,54,55,54,55,53,38,39,38,39,5,38,39,49,38,39, +6,7,6,7,22,23,22,23,50,55,21,6,7,6,7,34,7,6,21,20,23,22,51,54,55,54,55,53,96,41,27,27, +1,1,27,27,41,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37,1,1,27,27,41,1,96,1,27,27,41,41, +27,27,1,1,27,27,41,17,15,1,18,18,27,14,9,9,9,9,14,54,36,37,1,1,96,1,27,27,41,41,27,27, +1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,41,27,27,1,96,41,27,27,1,1,27,27,41,41, +27,27,1,6,6,27,18,18,1,9,9,14,14,9,9,1,37,36,54,96,0,7,0,0,255,192,2,0,1,192,0,17, +0,35,0,53,0,71,0,90,0,108,0,127,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23, +17,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,37,54,55,49,54,55,22,23,22,23,6,7,6,7, +38,39,38,39,33,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,38,53,49,52,55,54,51,50,23, +22,21,20,7,6,35,34,39,49,19,6,35,49,34,39,38,53,52,55,54,51,50,23,22,21,20,7,23,54,51,49,50, +23,22,21,20,7,6,35,34,39,38,53,52,55,49,1,48,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,208,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,2,0,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,75,14,14,15,19,19,15,14,14,15,19, +19,15,68,15,19,19,15,14,14,15,19,19,15,14,14,226,15,19,19,15,14,14,15,19,19,15,14,14,1,144,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +208,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14, +20,181,15,19,19,15,14,14,15,19,19,15,14,14,1,38,14,14,15,19,19,15,14,14,15,19,19,15,226,14,14,15, +19,19,15,14,14,15,19,19,15,0,0,0,0,1,0,0,255,192,2,0,1,192,0,26,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,2,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,70,0,88,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23,22,23,22,23, +54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9,10,12,11,14, +23,23,33,32,23,22,14,12,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9,9,14,13,9,9, +1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,70,11, +9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16,150,9,9,14,14,9,9,9,9, +14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,53,0,71,0,89,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,23,54,55,49,54,55,22,23,22,23,22,55,54,39,38,39,38,39,6,7,6,7,6,23,22,55,49,55,34, +7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23, +22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,159,10,26,26,35, +35,26,26,10,5,15,13,3,13,34,34,46,46,34,34,13,3,13,15,5,17,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,133,30,19,19,1,1,19,19,30,13,3,5,15,40,26,25,1,1,25,26,40, +15,5,3,13,213,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,73,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22, +51,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,7,6,7,22,23,51,54,55,38,39,35,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9,14,13,9, +9,1,1,9,9,13,160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,176,15,1,1,15,192,15,1,1,15,192, +192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,16,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,160,1,15,15,1,1,15,15,1,0,4,0,0, +0,0,2,128,1,128,0,18,0,43,0,61,0,79,0,0,1,33,6,7,6,7,22,23,22,23,33,54,55,54,55,38, +39,38,39,7,35,21,6,7,38,39,53,39,38,39,54,55,51,53,54,55,22,23,21,51,22,23,6,7,23,34,39,49, +38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35, +1,192,255,0,82,54,54,2,2,54,54,82,1,0,82,54,54,2,2,54,54,82,201,32,2,22,22,2,31,22,3,2, +22,32,2,22,22,2,32,22,2,1,23,184,17,11,11,12,11,16,16,12,11,11,10,18,64,17,11,11,12,11,16,17, +11,11,11,10,18,1,128,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,216,32,22,2,2,22,32,1,2, +21,22,2,32,22,2,2,22,32,2,22,22,2,64,12,11,16,17,11,12,12,11,17,17,11,11,96,12,11,16,17,11, +12,12,11,17,17,11,11,0,0,14,0,0,0,0,2,64,1,128,0,20,0,33,0,46,0,59,0,72,0,85,0,98, +0,111,0,124,0,137,0,150,0,163,0,176,0,189,0,0,37,33,38,39,38,39,17,54,55,54,55,33,22,23,22,23, +17,6,7,6,7,1,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51, +53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7, +21,22,23,51,54,55,5,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55, +51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6,7,21,22,23,51,54,55,51,53,38,39,35,6, +7,21,22,23,51,54,55,5,53,38,39,35,6,7,21,22,23,51,54,55,33,53,38,39,35,6,7,21,22,23,51,54, +55,51,53,38,39,35,6,7,21,22,23,51,54,55,2,0,254,64,27,18,18,1,1,18,18,27,1,192,27,18,18,1, +1,18,18,27,254,128,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11, +1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,254,128,1,11, +40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,96,1, +11,40,11,1,1,11,40,11,1,96,1,11,40,11,1,1,11,40,11,1,254,128,1,11,40,11,1,1,11,40,11,1, +1,32,1,11,232,11,1,1,11,232,11,1,96,1,11,40,11,1,1,11,40,11,1,0,1,18,18,27,1,0,27,18, +18,1,1,18,18,27,255,0,27,18,18,1,1,12,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1, +1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11, +96,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40, +11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,96,40,11,1,1,11,40,11,1,1,11,40,11, +1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,0,0,0,3,0,32,255,192,2,32,1,192,0,41, +0,108,0,119,0,0,1,34,7,6,39,38,39,38,39,38,7,49,52,39,38,35,34,7,6,21,17,22,23,51,54,55, +53,54,23,22,23,22,23,22,55,54,55,17,52,39,38,35,7,6,7,21,54,55,21,6,35,34,39,53,34,35,34,35, +38,39,21,38,39,53,6,39,34,35,6,7,21,6,7,53,55,54,55,54,55,53,6,7,53,55,54,55,21,54,51,50, +23,50,51,53,22,23,22,23,21,22,23,50,55,50,51,53,54,55,21,39,21,22,23,22,23,53,34,39,38,39,1,254, +10,9,65,39,41,33,35,49,49,84,9,9,14,14,9,9,1,15,32,15,1,76,52,52,44,44,52,45,63,19,1,10, +10,14,30,47,33,38,42,34,30,8,8,2,1,5,5,38,29,35,45,4,4,2,1,31,38,31,33,25,14,13,6,6, +28,36,25,21,18,39,29,4,4,2,2,26,27,13,14,30,37,5,6,1,1,38,42,240,26,27,13,14,2,1,33,44, +1,192,4,30,2,2,13,14,3,2,34,14,9,9,9,9,14,254,48,15,1,1,15,112,34,2,2,14,14,2,1,24, +9,20,1,45,14,9,8,142,20,2,81,2,16,82,11,1,74,1,9,67,10,3,76,1,1,1,11,69,8,12,63,11, +6,4,3,2,82,8,14,63,11,8,6,66,10,1,69,3,10,4,4,66,12,1,1,68,2,16,64,8,80,3,10,4, +4,83,1,13,4,0,0,0,0,2,0,0,255,224,2,64,1,160,0,25,0,45,0,0,19,38,53,49,52,55,54,51, +50,31,1,22,21,20,15,1,6,35,34,39,38,53,52,63,1,39,1,50,23,49,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,51,33,9,9,9,10,13,13,10,192,9,9,192,10,13,13,10,9,9,170,170,2,23,14,9,9,9,9, +14,254,224,14,9,9,9,9,14,1,32,1,105,10,13,13,10,9,9,192,10,13,13,10,192,9,9,10,13,13,10,169, +169,254,183,9,9,14,14,9,9,9,9,14,14,9,9,0,0,3,0,0,255,192,2,128,1,192,0,19,0,45,0,71, +0,0,1,3,6,7,6,39,38,39,38,55,19,54,55,54,23,22,23,22,7,49,31,1,22,21,20,15,1,6,35,34, +39,38,53,52,63,1,39,38,53,52,55,54,51,50,23,49,5,7,23,22,21,20,7,6,35,34,47,1,38,53,52,63, +1,54,51,50,23,22,21,20,7,49,1,159,128,4,11,12,13,13,6,6,3,128,4,11,12,13,13,6,6,3,104,112, +9,9,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,254,160,90,90,9,9,10,13,13,10,112,9,9,112,10, +13,13,10,9,9,1,151,254,64,13,6,6,3,4,11,12,13,1,192,13,6,6,3,4,11,12,13,80,112,10,13,13, +10,112,9,9,10,13,13,10,89,89,10,13,13,10,9,9,46,89,89,10,13,13,10,9,9,112,10,13,13,10,112,9, +9,10,13,13,10,0,0,0,0,2,0,0,255,225,2,64,1,160,0,32,0,51,0,0,55,23,22,55,54,55,53,22, +23,22,7,6,23,22,55,54,55,54,55,38,39,38,39,53,38,39,38,15,1,6,21,20,23,35,23,22,55,54,55,53, +39,55,53,38,39,38,15,1,6,21,20,23,136,176,13,13,13,1,82,29,30,28,3,10,9,12,34,24,24,1,2,62, +61,99,1,13,13,13,176,8,8,128,176,13,13,13,1,158,158,1,13,13,13,176,8,8,222,151,10,6,6,16,84,8, +42,41,91,13,6,6,6,25,41,42,46,97,41,40,6,82,16,6,6,10,152,8,10,11,7,151,10,6,6,16,16,135, +136,16,16,6,6,10,151,8,11,11,7,0,0,1,0,16,255,241,1,176,1,144,0,16,0,0,37,6,39,38,39,53, +35,38,39,38,55,37,54,23,22,7,3,1,30,11,25,25,2,176,24,6,4,23,1,96,19,16,14,7,144,4,23,4, +6,25,176,2,24,25,11,144,7,14,16,19,254,160,0,0,0,1,0,0,255,192,2,0,1,192,0,64,0,0,37,51, +50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,53,17,7,51,21,35,38,39,38,39,17,35,34,39,38, +53,52,55,54,59,1,53,52,55,54,51,50,23,22,21,17,55,35,53,51,55,54,51,50,23,22,21,20,15,1,17,1, +192,32,14,9,9,9,9,14,32,9,9,14,14,9,9,211,179,224,27,18,18,1,32,14,9,9,9,9,14,32,9,9, +14,14,9,9,211,179,243,54,10,13,13,10,9,9,55,64,9,9,14,14,9,9,32,14,9,9,9,9,14,1,51,211, +64,1,18,18,27,1,0,9,9,14,14,9,9,32,14,9,9,9,9,14,254,205,211,64,55,9,9,10,13,13,10,54, +254,237,0,0,0,4,0,0,255,192,1,192,1,192,0,71,0,80,0,89,0,98,0,0,19,20,7,49,6,7,21,54, +59,1,54,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,21,6,7,6,7,35,6,7,6, +7,21,22,23,22,21,6,7,6,7,38,39,38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,49, +7,54,55,38,39,6,7,22,23,37,6,7,22,23,54,55,38,39,1,54,55,38,39,6,7,22,23,160,13,13,22,29, +35,96,27,18,18,1,22,13,13,1,22,23,34,34,23,22,1,13,13,22,1,36,37,54,96,27,18,18,1,22,13,13, +1,22,23,34,34,23,22,1,13,13,22,22,13,13,1,22,23,34,34,23,22,1,80,22,2,2,22,22,2,2,22,1, +32,22,2,2,22,22,2,2,22,254,224,22,2,2,22,22,2,2,22,1,112,25,19,19,10,88,17,1,18,18,27,7, +10,19,19,25,34,23,22,1,1,22,23,34,25,19,19,10,7,54,37,36,1,1,18,18,27,7,9,20,19,25,34,23, +22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1,22,23,34,24,2,22,22,2,2,22,22,2, +48,2,22,22,2,2,22,22,2,254,112,2,22,22,2,2,22,22,2,0,0,4,0,0,255,192,2,128,1,192,0,49, +0,58,0,67,0,97,0,0,19,54,23,49,22,23,22,23,22,7,23,55,54,53,52,39,38,39,38,15,1,6,39,38, +39,38,55,54,63,1,54,23,22,23,22,21,20,15,1,23,22,7,6,39,1,38,55,54,31,3,54,39,38,39,38,7, +49,23,38,55,23,6,39,38,39,49,39,23,7,6,21,20,23,22,23,22,63,1,54,23,22,23,22,7,6,15,1,6, +39,38,39,38,53,52,63,1,186,44,53,53,40,33,8,8,18,32,96,23,23,22,29,28,25,2,11,13,12,8,8,2, +2,11,2,44,51,52,39,42,42,91,142,16,12,15,19,253,176,16,12,15,19,147,52,115,9,30,20,25,25,24,25,45, +3,186,38,38,38,30,146,50,61,24,24,21,29,28,25,2,11,13,12,9,7,2,2,11,1,46,51,51,39,42,42,57, +1,72,33,3,3,38,34,44,43,42,24,95,25,33,32,24,22,2,3,18,1,8,3,2,10,12,12,13,8,1,31,4, +5,37,45,57,58,45,90,111,15,19,16,12,1,208,15,19,16,12,115,41,91,42,33,19,4,3,10,219,48,62,146,11, +9,9,29,192,40,62,24,32,33,25,20,3,2,17,2,7,2,3,10,12,12,13,8,1,31,4,5,37,45,57,58,45, +56,0,0,0,0,2,0,0,255,193,0,192,1,160,0,35,0,53,0,0,55,35,53,52,39,38,43,1,34,7,6,21, +20,23,22,59,1,21,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,3,54,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,23,160,32,9,9,14,64,14,9,9,9,9,14,32,32,14,9,9,9,9,14,128,14, +9,9,9,9,14,64,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,224,14,9,9,9,9,14,14,8, +9,192,9,9,14,14,9,9,9,9,14,13,9,9,1,64,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1, +0,2,0,0,0,0,2,0,1,192,0,30,0,88,0,0,1,53,38,39,38,15,1,6,7,6,23,22,51,21,34,7, +6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,39,50,55,49,54,53,52,39,38,43,1,34,15,1,39,38,43, +1,34,7,6,21,20,23,22,59,1,23,7,35,34,7,6,21,20,23,22,59,1,50,63,1,23,22,59,1,50,55,54, +53,52,39,38,43,1,39,55,51,1,224,1,14,15,16,32,12,4,4,5,9,20,14,9,9,9,9,14,64,14,9,9, +9,9,14,160,14,9,9,9,9,14,32,16,10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,14,9,9,9, +9,14,32,16,10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,1,32,128,18,9,9,7,16,7,12,12,12, +18,80,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,14,122,122,14,9,9,14,14,9,9,128, +128,9,9,14,14,8,9,14,121,122,14,9,9,13,13,9,10,128,127,0,0,2,0,0,255,192,2,0,1,128,0,30, +0,88,0,0,37,53,38,39,38,15,1,6,7,6,23,22,51,21,34,7,6,21,20,23,22,59,1,50,55,54,53,52, +39,38,35,3,50,55,49,54,53,52,39,38,43,1,34,15,1,39,38,43,1,34,7,6,21,20,23,22,59,1,23,7, +35,34,7,6,21,20,23,22,59,1,50,63,1,23,22,59,1,50,55,54,53,52,39,38,43,1,39,55,51,1,224,1, +14,15,16,32,12,4,4,5,10,19,14,9,9,9,9,14,64,14,9,9,9,9,14,160,14,9,9,9,9,14,32,16, +10,86,86,10,16,32,14,9,9,9,9,14,15,90,90,15,14,9,9,9,9,14,32,16,10,86,86,10,16,32,14,9, +9,9,9,14,15,90,90,15,0,128,18,9,9,7,16,7,12,12,12,18,80,9,9,14,14,9,9,9,9,14,14,9, +9,1,64,9,9,14,14,9,9,14,122,122,14,9,9,14,14,9,9,128,128,9,9,14,14,8,9,14,121,122,14,9, +9,13,13,9,10,128,127,0,0,2,0,7,255,224,2,0,1,153,0,29,0,35,0,0,37,50,23,49,22,21,20,7, +6,35,33,34,47,1,38,53,52,63,1,54,51,50,31,1,22,21,20,15,1,51,35,55,39,7,23,51,1,224,14,9, +9,9,9,14,254,183,27,19,80,18,18,234,19,26,26,19,138,18,18,131,124,215,68,138,124,80,114,32,9,9,14,14, +9,9,19,80,19,26,26,19,234,18,18,138,19,26,26,19,131,67,138,125,80,0,0,0,0,1,0,0,255,192,2,0, +1,191,0,121,0,0,37,6,7,49,6,7,34,39,38,39,38,39,6,7,21,20,7,6,43,1,38,39,54,55,54,55, +54,53,38,39,38,39,6,7,6,7,20,23,22,23,22,23,6,7,35,34,39,38,61,1,54,55,22,23,22,23,22,51, +54,55,54,55,38,39,38,39,34,7,6,7,6,7,38,39,53,52,55,54,59,1,54,55,38,39,38,39,38,53,54,55, +54,51,50,23,22,23,20,7,6,7,6,7,22,23,51,50,23,22,29,1,22,23,54,55,54,55,54,51,22,23,22,23, +2,0,1,13,14,20,13,7,7,6,7,16,22,2,9,9,14,72,22,2,2,12,7,5,6,1,18,18,27,27,18,18, +1,6,5,7,12,2,2,22,136,14,9,9,2,22,15,8,6,7,7,13,20,14,13,1,1,13,14,20,13,7,7,6, +7,16,22,2,9,9,14,136,22,2,2,12,7,5,6,1,18,18,27,27,18,18,1,6,5,7,12,2,2,22,72,14, +9,9,2,22,15,8,6,7,7,13,20,14,13,1,160,27,18,18,1,6,5,7,12,2,2,22,136,14,9,9,2,22, +16,8,5,7,7,13,20,14,13,1,1,13,14,20,13,7,7,6,7,16,22,2,9,9,14,136,22,2,2,12,7,5, +6,1,18,18,27,27,19,18,1,6,5,7,13,1,2,21,72,14,8,9,4,21,15,8,6,7,7,13,20,14,13,14, +13,20,13,7,7,6,7,16,22,2,9,9,13,72,22,2,2,12,7,5,6,1,18,19,27,0,0,0,0,2,0,16, +255,192,1,112,1,192,0,19,0,65,0,0,55,54,55,49,54,55,53,38,39,38,39,6,7,6,7,21,22,23,22,23, +55,6,7,21,6,7,6,39,38,39,38,39,53,38,39,6,7,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54, +55,52,39,38,43,1,53,54,55,54,55,53,38,39,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,152, +22,2,2,38,39,57,51,34,34,1,2,22,22,2,1,42,42,67,40,14,9,9,2,14,160,14,2,9,9,14,40,66, +42,43,1,2,22,96,1,27,27,41,160,41,27,27,1,1,27,27,41,160,41,27,27,1,160,2,21,41,57,36,37,2, +5,38,39,51,36,21,2,2,21,32,69,51,51,11,35,10,9,15,13,1,1,13,15,9,10,34,10,48,48,68,41,21, +2,0,0,0,0,2,0,0,255,192,2,127,1,192,0,33,0,70,0,0,5,35,53,54,55,39,6,39,38,39,38,39, +53,39,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,23,39,54,55,53,38,39,6,7,21, +6,7,39,54,61,1,38,39,38,39,34,7,6,7,21,39,38,35,34,7,6,23,1,22,55,54,39,1,127,39,31,27, +44,22,24,51,34,35,1,48,1,42,42,66,40,13,9,9,2,14,159,14,1,1,8,9,14,248,159,23,1,2,21,22, +2,1,14,26,9,1,26,26,40,42,28,28,1,186,7,8,11,8,12,16,2,79,19,15,13,16,16,34,4,14,34,7, +1,5,38,39,51,4,37,38,69,51,51,11,34,9,9,13,16,1,2,13,14,10,9,5,125,39,49,40,22,2,2,22, +39,32,26,20,17,21,155,41,28,29,2,27,27,42,54,145,5,9,19,15,254,49,12,16,17,16,0,0,0,1,0,15, +255,195,1,240,1,192,0,29,0,0,1,50,31,1,22,23,22,21,22,7,6,7,6,7,6,39,38,39,38,39,38,53, +54,55,54,63,1,54,51,49,1,0,7,6,189,17,10,11,1,18,18,47,46,86,26,26,86,46,47,18,18,1,11,10, +17,189,6,7,1,192,3,80,7,15,15,19,52,69,68,66,66,43,12,12,43,66,66,68,69,52,19,15,15,7,80,3, +0,2,0,0,255,192,1,192,1,192,0,35,0,49,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54, +51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,1,6,7,49,6,7,33,38,39,38,39,17, +33,17,96,9,9,14,14,9,9,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,1,96,1,13, +14,20,254,160,20,14,13,1,1,192,1,160,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32,1,13,14,20,48, +48,20,14,13,1,32,254,80,20,14,13,1,1,13,14,20,1,16,254,240,0,3,0,0,255,192,1,254,1,192,0,13, +0,71,0,80,0,0,23,20,23,49,22,59,1,50,55,54,61,1,35,21,1,38,15,1,6,7,35,53,52,39,38,43, +1,34,7,6,29,1,6,7,6,7,6,23,22,51,54,55,54,55,54,55,21,6,7,6,29,1,51,53,52,39,38,39, +53,51,22,31,1,50,51,50,55,54,61,1,54,39,5,38,39,54,55,22,23,6,7,64,9,9,13,161,14,8,9,223, +1,183,8,11,175,19,1,65,9,9,13,33,14,9,9,44,34,34,15,5,20,4,4,16,7,10,21,21,29,29,17,18, +223,18,17,28,63,1,19,175,2,2,9,7,8,2,9,254,185,15,1,1,15,14,1,1,14,32,14,9,9,9,9,14, +32,32,1,218,7,1,32,5,19,24,14,9,9,9,9,14,27,8,29,29,43,22,9,1,1,15,29,20,19,8,31,14, +27,26,34,176,176,34,26,27,14,35,19,5,31,5,8,11,112,10,7,90,1,15,15,1,1,15,15,1,0,2,0,0, +255,192,1,255,1,191,0,48,0,66,0,0,55,39,38,55,54,55,35,34,39,38,63,1,54,55,51,54,55,54,49,54, +55,54,55,54,23,22,23,22,7,6,7,6,7,6,7,21,6,15,1,6,39,38,61,1,6,7,6,39,49,55,50,55, +49,54,53,52,39,38,39,6,7,6,21,20,23,22,51,157,31,13,4,4,9,106,14,7,6,6,53,21,41,82,3,3, +1,42,50,50,49,49,37,18,5,7,3,4,26,26,60,6,5,1,34,89,12,12,12,21,15,18,13,227,17,11,12,12, +11,17,17,11,12,12,11,17,63,32,13,18,14,20,12,12,12,89,34,2,4,5,1,60,26,26,4,3,7,5,18,37, +49,49,50,50,42,4,2,83,41,21,53,6,6,7,14,107,7,5,5,13,218,11,11,18,16,12,11,1,1,11,12,16, +18,11,11,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49,6,7,49,6,7,22,23,22, +23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,22,21,49,20,7,6,35,34,47,1,38,53,52,63,1,54, +51,50,23,22,21,20,15,1,23,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,55,9,9,10,13,13,10,112,9,9,112,10,13,13,10,9,9,90,90,1,192,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,167,10,13,13,10,9,9,112,10,13,13,10,112,9,9, +10,13,13,10,89,89,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,1,6,7,49,6,7,49,6, +7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,35,34,39,38,53,52,63,1,39,38, +53,52,55,54,51,50,31,1,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,103,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,112,9,9,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,233,112,9,9,10,13,13,10,89,89,10,13, +13,10,9,9,112,10,13,13,10,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,6,35,49,34,47,1,7,6, +35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,135,10,13,13,10,89,89,10,13,13,10,9,9,112,10,13,13,10,112,9,9, +1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,201,9,9,90,90, +9,9,10,13,13,10,112,9,9,112,10,13,13,10,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0, +1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23,7,6,35,34, +47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,7,1,0,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,135,112,10,13,13,10,112,9,9,10,13,13,10,89,89,10,13,13, +10,9,9,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,247,112,9, +9,112,10,13,13,10,9,9,90,90,9,9,10,13,13,10,0,2,0,0,255,192,2,63,1,192,0,88,0,106,0,0, +1,50,23,49,22,21,20,7,6,43,1,21,51,54,55,54,55,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1, +21,6,7,6,7,35,38,39,38,39,53,7,6,39,38,63,1,54,31,1,22,7,6,47,1,21,22,23,22,23,51,53, +35,34,39,38,53,52,55,54,59,1,38,39,54,55,54,55,22,23,22,23,20,7,6,7,51,39,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,1,96,14,9,9,9,9,14,32,48,41,27,27,1,8,16,17,14,14,56,17, +16,56,15,15,16,17,7,2,45,45,68,160,68,45,45,2,7,17,17,14,14,56,17,17,55,15,15,16,17,7,1,27, +27,41,48,32,14,9,9,9,9,14,11,41,2,1,27,27,41,41,27,27,1,12,12,19,11,64,14,9,9,9,9,14, +14,9,9,9,9,14,1,16,9,9,14,14,9,9,208,1,27,27,41,6,6,15,15,16,17,56,14,14,56,17,16,15, +15,6,6,68,45,45,2,2,45,45,68,6,6,15,15,16,17,56,14,14,56,17,16,15,15,6,6,41,27,27,1,208, +9,9,14,14,9,9,28,52,41,27,27,1,1,27,27,41,25,21,21,13,48,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,2,0,0,255,192,1,192,1,192,0,49,0,69,0,0,19,6,7,49,6,7,21,51,22,23,22,23, +21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,22,7,6,7,6,39,38, +39,38,39,38,35,49,19,50,55,49,54,53,52,39,38,43,1,34,7,6,21,20,23,22,59,1,224,34,23,22,1,240, +27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,16,2,40,41,61,44,34,34,18,6,5,4,13,12, +12,12,6,10,19,19,24,32,14,9,9,9,9,14,64,14,9,9,9,9,14,64,1,128,1,22,23,34,48,1,18,18, +27,192,27,18,18,1,1,18,18,27,192,27,18,18,1,48,61,41,40,2,1,22,22,37,13,12,12,6,5,4,4,12, +21,12,13,254,192,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,192,2,0,1,192,0,17, +0,35,0,53,0,80,0,98,0,0,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,35,54,55,49, +54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23, +37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,6,7,49,6, +7,22,23,22,23,54,55,54,55,38,39,38,39,1,32,9,9,14,14,9,9,9,9,14,14,9,9,176,2,40,41,61, +61,41,40,2,2,40,41,61,61,41,40,2,144,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,0,82,54,54,2,2,54,54, +82,82,54,54,2,2,54,54,82,192,14,9,9,9,9,14,14,9,9,9,9,14,61,41,40,2,2,40,41,61,61,41, +40,2,2,40,41,61,80,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54, +2,0,0,0,0,3,0,8,0,136,1,184,0,248,0,17,0,35,0,53,0,0,55,6,7,49,6,7,38,39,38,39, +54,55,54,55,22,23,22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,49,54,55, +22,23,22,23,6,7,6,7,38,39,38,39,120,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,160,1,15, +16,24,24,16,15,1,1,15,16,24,24,16,15,1,48,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,192, +24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24, +24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,0,3,0,8,255,232,0,120,1,152,0,17,0,35,0,53, +0,0,55,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,22,23,49,22,23,6,7,6,7,38,39, +38,39,54,55,54,55,53,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,64,24,16,15,1,1,15,16, +24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,1,15,16, +24,24,16,15,1,1,15,16,24,88,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,160,1,15,16,24,24, +16,15,1,1,15,16,24,24,16,15,1,48,1,15,16,24,24,16,15,1,1,15,16,24,24,16,15,1,0,4,0,0, +255,224,1,192,1,160,0,20,0,37,0,59,0,83,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,6,35,34,39,38,53,52,55,54,51,50,23,22,21,20,7,23,38,7,49,48,35,38,39,38,39, +38,39,38,39,54,55,22,23,22,23,6,7,55,20,35,49,48,49,38,39,38,39,38,39,38,39,54,55,22,23,22,23, +22,23,20,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,233,10,13,13,10,9, +9,10,13,13,10,9,9,99,1,1,1,21,3,3,30,29,43,21,1,4,22,60,42,42,6,1,21,95,2,21,3,5, +56,57,82,22,1,3,22,66,55,55,33,34,3,22,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,254,169,9,9,10,13,13,10,9,9,10,13,13,10,9,1,1,2,20,43,29,30,4,4,22,21,1,5, +43,42,60,23,3,1,1,2,21,82,57,57,6,2,22,22,1,4,33,34,55,54,66,23,2,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,26,0,43,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54, +55,22,23,22,23,22,23,37,21,20,23,22,63,1,54,53,52,47,1,38,7,6,21,49,2,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,176,12,12,13,144,11,11,144,13,12,12,192,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,88,176,14,7,6,6,88,8,13, +13,7,88,8,7,7,14,0,0,3,0,0,0,0,2,64,1,128,0,4,0,44,0,66,0,0,19,33,21,33,53,37, +22,23,49,22,23,21,6,7,6,7,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,38,39,38, +39,53,54,55,54,55,33,1,20,23,49,22,51,33,50,55,54,61,1,52,39,38,35,33,34,7,6,29,1,128,1,64, +254,192,1,128,27,18,18,1,20,14,13,1,1,13,14,20,1,18,18,27,254,64,27,18,18,1,20,14,13,1,1,13, +14,20,1,18,18,27,1,192,254,96,9,9,14,1,64,14,9,9,9,9,14,254,192,14,9,9,1,32,192,192,96,1, +18,18,27,80,1,13,14,20,20,14,13,1,80,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14,13,1,80,27, +18,18,1,254,224,14,9,9,9,9,14,192,14,9,9,9,9,14,192,0,0,2,0,0,255,224,1,192,1,160,0,21, +0,32,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,22,23,51, +54,55,38,39,35,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,248,22,2,2,22, +176,22,2,2,22,176,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,200,2,22,22, +2,2,22,22,2,0,0,0,0,1,0,0,255,192,1,96,1,192,0,42,0,0,1,6,35,34,47,1,17,6,7,6, +7,35,34,39,38,53,52,55,54,59,1,54,55,17,7,6,35,34,39,38,53,52,63,1,54,51,50,31,1,22,21,20, +7,1,87,10,14,13,10,72,1,22,23,34,112,14,9,9,9,9,14,112,15,1,73,10,13,13,10,9,9,127,10,13, +13,10,128,10,9,1,9,9,9,74,254,189,34,23,22,1,9,9,14,14,9,9,1,15,1,67,74,9,9,10,13,13, +10,128,9,9,128,10,13,13,10,0,0,0,0,1,0,0,255,192,1,96,1,192,0,42,0,0,37,7,6,35,34,47, +1,38,53,52,55,54,51,50,31,1,17,38,39,35,34,39,38,53,52,55,54,59,1,22,23,22,23,17,55,54,51,50, +23,22,21,20,7,1,87,128,10,14,13,10,127,9,9,10,13,13,10,73,1,15,112,14,9,9,9,9,14,112,34,23, +22,1,73,10,13,13,10,9,9,73,128,9,9,128,10,13,13,10,9,9,74,1,67,15,1,9,9,14,14,9,9,1, +22,23,34,254,189,74,9,9,10,13,13,10,0,2,0,0,255,224,1,192,1,160,0,21,0,47,0,0,1,22,23,49, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,54,53,49,52,39,38,35,34,15,1,39,38,35, +34,7,6,21,20,31,1,22,51,50,63,1,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,44,8,8,9,11,11,9,108,44,9,11,11,9,8,8,64,9,11,11,9,128,1,160,1,18,18,27,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,180,9,11,11,9,8,8,108,44,8,8,9,11,11,9,64,8,8,128, +0,3,0,0,255,224,1,192,1,160,0,21,0,35,0,49,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39, +38,39,17,54,55,54,55,33,7,38,35,49,34,15,1,23,55,54,53,52,47,1,15,1,6,23,22,63,1,54,63,1, +39,7,6,7,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,58,13,16,15,13,21, +71,21,12,12,14,214,16,1,6,6,9,60,9,6,105,71,105,6,2,1,160,1,18,18,27,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,108,12,12,21,71,21,13,16,16,12,14,164,59,10,6,6,2,15,2,6,105,71,104, +8,8,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,56,0,0,1,33,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,17,38,39,38,39,3,20,7,49,6,35,34,39,38,61,1,7,6,35,34,39,38,53,52,63,1,35,34, +39,38,53,52,55,54,59,1,50,23,22,29,1,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1, +18,18,27,40,9,9,14,14,9,9,121,10,13,13,10,9,9,122,67,14,9,9,9,9,14,144,14,9,9,1,160,1, +18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,232,14,9,9,9,9,14,67,122,9,9,10, +13,13,10,121,9,9,14,14,9,9,9,9,14,144,0,0,0,2,0,0,255,193,2,64,1,191,0,34,0,72,0,0, +1,39,38,7,6,7,21,34,7,6,7,6,7,22,23,22,23,22,55,54,39,38,55,54,23,21,22,23,22,63,1,54, +53,52,39,7,34,7,49,6,29,1,33,17,51,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,53,52,39,38,35,2,57,151,11,11,11,1,72,58,57,34,34,1,1,21,22,30,10,9,9,3,29,44, +44,98,1,11,11,11,151,7,7,153,14,9,9,254,192,32,14,9,9,9,9,14,32,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,9,9,14,1,48,139,8,5,5,15,74,14,13,36,35,67,41,37,36,22,6,6,5,12,93,33,32, +1,74,15,5,5,8,138,7,9,10,6,240,9,9,14,31,1,63,9,9,14,14,9,9,1,18,18,27,254,193,27,18, +18,1,1,18,18,27,31,14,9,9,0,0,0,3,0,0,255,192,2,0,1,192,0,17,0,44,0,62,0,0,37,20, +7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,33,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6, +7,6,7,6,7,38,39,38,39,38,39,5,55,54,39,38,15,1,6,15,1,6,23,22,63,1,54,55,49,1,32,9, +9,14,14,9,9,9,9,14,14,9,9,254,224,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,69,56,4,10,10,15,145,13,5,56,4,9,10,16,145,13,5,192,14,9,9,9,9,14,14,9, +9,9,9,14,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,51,145,16,10, +9,4,56,5,13,145,15,10,10,4,56,5,13,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,36,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,6,35,34,47,1,38,55,54,55, +51,22,23,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,38,104,8,10,10, +8,104,10,6,7,15,208,16,5,7,10,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,200,112,8,8,112,11,15,13,1,1,13,15,11,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,36,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,38,63,1,54,51, +50,31,1,22,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,35,5,16,208,15, +7,6,10,104,8,10,10,8,104,10,7,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,254,238,13,1,1,13,15,11,112,8,8,112,11,15,0,0,2,0,0,255,224,1,192,1,160,0,20,0,38,0,0, +1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,15,1,6,35,34,39,38,39,53,54,55, +54,31,1,22,21,20,7,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,72,112,7, +9,5,5,13,1,1,13,15,11,112,8,8,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18, +18,1,242,104,6,2,7,15,208,15,7,5,9,104,7,11,10,8,0,0,0,1,0,32,255,224,1,96,1,160,0,87, +0,0,55,34,39,49,38,53,52,55,54,59,1,54,55,54,55,51,50,23,22,21,20,7,6,43,1,6,7,6,7,51, +50,23,22,21,20,7,6,43,1,20,29,1,20,21,51,50,23,22,21,20,7,6,43,1,22,23,22,23,51,50,23,22, +21,20,7,6,43,1,38,39,38,39,35,34,39,38,53,52,55,54,59,1,52,61,1,52,53,35,64,14,9,9,9,9, +14,28,24,54,54,72,24,14,9,9,9,9,14,24,44,35,35,20,126,14,9,9,9,9,14,144,144,14,9,9,9,9, +14,126,20,35,35,44,24,14,9,9,9,9,14,24,72,54,54,24,28,14,9,9,9,9,14,16,16,208,9,9,14,14, +9,9,64,39,40,1,9,9,14,14,9,9,1,21,22,36,9,9,14,14,9,9,4,4,16,4,4,9,9,14,14,9, +9,36,22,21,1,9,9,14,14,9,9,1,40,39,64,9,9,14,14,9,9,4,4,16,4,4,0,0,0,1,0,0, +255,224,1,64,1,160,0,66,0,0,55,51,22,23,22,21,20,7,6,43,1,21,20,7,21,51,50,23,22,21,20,7, +6,35,33,38,39,38,63,1,54,61,1,35,34,39,38,53,52,55,54,59,1,53,54,55,54,55,50,31,1,22,23,22, +7,6,7,6,47,1,38,35,6,7,6,7,21,112,112,14,9,9,9,9,14,112,23,199,14,9,9,9,9,14,255,0, +18,10,8,9,29,14,16,14,9,9,9,9,14,16,1,37,36,54,21,19,82,13,6,5,4,4,12,11,13,81,10,11, +27,18,18,1,225,1,9,9,13,14,9,9,46,43,39,1,9,9,14,14,9,9,1,15,16,16,50,23,26,45,9,9, +14,14,9,9,64,54,36,37,1,7,27,4,12,11,13,13,6,5,4,27,3,1,18,18,27,63,0,0,0,3,0,0, +255,224,1,191,1,160,0,35,0,47,0,136,0,0,19,52,55,49,54,59,1,22,23,22,23,6,7,6,7,23,22,7, +6,7,6,39,38,47,1,35,21,20,7,6,35,34,39,38,53,17,23,51,54,55,54,55,38,39,38,39,35,21,5,20, +23,22,23,51,22,23,22,23,22,23,22,7,6,7,6,39,49,38,39,38,39,38,39,34,39,38,39,38,55,54,55,54, +23,22,23,22,23,22,23,22,23,22,55,54,55,54,39,38,39,38,47,1,38,39,38,39,38,55,54,55,54,23,50,23, +22,23,22,23,22,23,22,7,6,7,6,39,38,39,38,39,38,7,6,21,6,23,49,0,9,9,14,80,61,41,40,2, +1,23,23,39,52,4,5,5,12,13,12,11,6,56,42,9,9,14,14,9,9,64,48,34,23,22,1,1,22,23,34,48, +1,1,4,10,28,1,13,15,15,12,16,8,7,3,8,36,34,39,15,14,10,8,2,1,2,2,12,5,5,4,5,12, +12,13,3,5,7,8,7,5,4,3,23,10,7,2,1,2,1,3,10,27,3,26,28,15,8,8,3,8,35,35,39,1, +1,7,10,10,7,12,6,6,3,5,11,11,13,5,9,9,5,23,11,8,1,1,1,128,14,9,9,2,40,41,61,45, +35,34,18,128,13,12,11,6,4,5,5,12,140,128,14,9,9,9,9,14,1,128,192,1,22,23,34,34,23,22,1,160, +26,2,3,8,9,4,7,7,10,12,21,20,24,42,19,15,7,4,5,4,3,1,1,1,5,12,11,13,13,5,5,5, +1,2,2,4,2,2,1,1,3,6,3,10,10,2,2,4,8,9,1,7,19,11,20,20,23,43,17,16,7,1,1,2, +3,2,4,11,11,14,12,6,6,3,2,2,2,1,3,6,5,7,9,1,0,1,0,0,255,224,1,63,1,159,0,72, +0,0,63,1,54,55,54,23,22,23,22,15,1,51,22,23,22,21,20,7,6,43,1,21,51,50,23,22,21,20,7,6, +43,1,21,20,7,6,35,34,39,38,39,53,35,34,39,38,39,54,55,54,59,1,53,35,34,39,38,39,54,55,54,55, +51,39,38,55,54,55,54,23,22,31,1,159,102,8,13,12,12,11,2,3,7,95,52,14,9,9,9,9,14,80,80,14, +9,9,9,9,14,80,9,10,14,13,9,9,1,80,13,9,9,1,1,9,9,13,80,80,13,9,9,1,1,9,9,13, +53,95,7,3,2,11,12,12,13,8,100,250,152,11,2,3,7,8,13,12,12,141,1,9,9,13,14,9,9,32,10,9, +14,14,9,9,64,14,9,9,9,9,14,64,9,9,14,14,9,10,32,9,9,14,13,9,9,1,141,12,12,13,8,7, +3,2,11,152,0,2,0,0,255,224,1,128,1,160,0,58,0,71,0,0,19,22,23,49,22,23,6,7,6,7,35,21, +51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,34,39,38,53,52,55,54,59,1,53,35, +34,39,38,53,52,55,54,59,1,53,52,55,54,59,1,23,38,39,49,38,39,35,21,51,54,55,54,55,240,61,41,40, +2,2,40,41,61,112,160,14,9,9,9,9,14,160,9,9,14,14,9,9,32,14,9,9,9,9,14,32,32,14,9,9, +9,9,14,32,9,9,14,144,80,1,22,23,34,112,112,34,23,22,1,1,160,2,40,41,61,61,41,40,2,32,9,9, +14,14,9,9,32,14,9,9,9,9,14,32,9,9,14,14,9,9,32,9,9,14,14,9,9,192,14,9,9,144,34,23, +22,1,160,1,22,23,34,0,0,4,0,0,255,225,2,0,1,160,0,61,0,65,0,69,0,73,0,0,55,51,55,54, +55,22,31,1,51,55,54,55,54,23,22,23,22,15,1,51,50,23,22,21,20,7,6,43,1,7,6,39,38,47,1,35, +7,6,7,6,47,1,35,34,39,38,53,52,55,54,59,1,39,38,55,54,55,54,23,22,31,3,55,35,55,51,39,7, +31,1,55,35,119,64,41,8,24,24,7,41,65,57,4,12,11,13,13,6,5,4,50,20,14,9,9,9,9,14,41,57, +9,22,23,8,41,47,41,7,23,23,8,57,41,14,9,9,9,9,14,20,50,4,5,6,13,13,11,12,4,57,21,16, +11,27,108,15,7,8,96,12,16,28,224,168,23,1,1,23,168,170,13,6,5,4,4,12,11,13,150,9,9,14,14,9, +9,170,22,1,1,22,168,168,22,1,1,22,170,9,9,14,14,9,9,150,13,11,12,4,4,5,6,13,170,64,46,46, +64,28,28,64,46,46,0,0,0,2,0,0,255,192,1,128,1,192,0,23,0,27,0,0,19,54,55,49,54,55,51,21, +20,23,22,59,1,17,6,7,6,7,33,38,39,38,39,17,5,53,23,35,0,1,18,18,27,160,9,9,14,128,1,18, +18,27,255,0,27,18,18,1,1,0,128,128,1,128,27,18,18,1,128,14,9,9,254,224,27,18,18,1,1,18,18,27, +1,128,64,128,128,0,0,0,0,5,0,0,255,192,1,128,1,192,0,3,0,26,0,37,0,48,0,59,0,0,1,21, +51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,19,35,38,39,54,55,51, +22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,55,6,7,35,38,39,54,55,51,22,23,1,0,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,48,160,15,1,1,15,160,15,1,1,15,160,15,1, +1,15,160,15,1,1,15,16,1,15,160,15,1,1,15,160,15,1,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,254,224,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,80,15, +1,1,15,15,1,1,15,0,0,4,0,7,255,224,1,239,1,160,0,35,0,66,0,92,0,96,0,0,55,54,39,49, +38,39,38,35,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,34,7,6,7,6,31,1,22,51,50,63,1, +23,35,55,54,39,38,39,35,34,7,6,21,20,23,22,59,1,7,6,23,22,23,51,50,55,54,53,52,39,38,35,55, +39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,240,9,1, +1,9,11,13,13,9,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88,9,14,14,10,89,208,51,74,14, +7,9,22,128,13,9,9,9,9,14,51,74,14,7,9,20,127,15,9,10,9,9,14,45,80,10,19,19,10,80,5,4, +4,12,12,12,12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,75,10,13,13,9,9,1,10,36,1,46, +14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10,97,43,73,16,19,19,1,9,9,14,14,9,9, +73,16,19,19,1,9,9,14,14,9,9,207,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12, +12,13,42,32,32,0,0,0,0,4,0,8,255,224,1,239,1,160,0,35,0,66,0,92,0,96,0,0,19,38,35,49, +34,15,1,6,21,22,23,22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,54,47,1, +1,35,55,54,39,38,39,35,34,7,6,21,20,23,22,59,1,7,6,23,22,23,51,50,55,54,53,52,39,38,35,55, +39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,152,10,14, +14,10,87,9,1,9,11,12,13,10,32,9,9,14,14,9,9,32,9,13,13,11,9,1,1,9,88,1,40,51,74,14, +7,9,21,129,13,9,9,9,9,14,51,74,14,7,9,20,127,15,9,10,9,9,14,45,80,10,19,19,10,80,5,4, +4,12,12,12,12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,1,150,10,10,96,10,13,13,9,9,1, +10,35,254,210,14,9,9,9,10,14,1,45,35,10,1,9,9,13,13,10,96,254,138,73,16,19,19,1,9,9,14,14, +9,9,73,16,19,19,1,9,9,14,14,9,9,207,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7, +6,12,12,13,42,32,32,0,0,5,0,7,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,110,0,0,37,35, +34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7,6,21,20,23,22,59,1,50,55,54,53, +52,39,38,35,3,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7,6,21,20,23,22, +59,1,50,55,54,53,52,39,38,35,5,7,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1, +22,51,50,63,1,54,39,52,39,38,35,6,7,1,160,95,14,9,9,9,9,14,95,14,9,9,9,9,14,128,223,14, +9,9,9,9,14,223,14,9,9,9,9,14,192,32,14,9,9,9,9,14,32,14,8,9,9,8,14,128,159,14,9,9, +9,9,14,159,14,9,9,9,9,14,254,224,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,9,14,14, +10,87,9,1,10,9,13,12,10,160,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9,9,9,9, +14,14,9,9,254,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9,9,9,9,14,14,9,9, +171,35,1,46,14,9,9,9,9,14,254,210,35,11,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1,10,0,0, +0,5,0,8,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,111,0,0,37,35,34,7,6,21,20,23,22,59, +1,50,55,54,53,52,39,38,35,7,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,19,35,34,7, +6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,55,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39, +38,35,5,38,35,49,34,15,1,6,21,22,23,22,51,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50, +55,54,55,52,47,1,1,160,95,14,9,9,9,9,14,95,14,9,9,9,9,14,64,32,14,9,9,9,9,14,32,14, +8,9,9,8,14,128,159,14,9,9,9,9,14,159,14,9,9,9,9,14,64,223,14,9,9,9,9,14,223,14,9,9, +9,9,14,254,120,10,14,14,10,87,9,1,9,10,12,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,8, +88,160,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14, +14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,10,10,10,96,10,13,13,9,9,11, +35,254,210,14,9,9,9,9,14,1,46,35,10,1,9,9,13,13,10,96,0,4,0,7,255,224,1,224,1,160,0,31, +0,60,0,69,0,104,0,0,1,20,23,49,22,51,23,50,55,54,53,52,39,38,35,53,38,39,38,15,1,6,7,6, +23,22,23,21,34,7,6,21,23,6,7,49,6,7,20,23,22,23,7,6,21,20,23,22,51,50,55,54,55,54,55,54, +39,38,39,38,35,21,38,39,54,55,22,23,6,7,39,34,15,1,17,52,39,38,35,34,7,6,21,17,39,38,39,34, +7,6,7,6,31,1,22,51,50,63,1,54,39,52,39,38,35,1,64,9,9,14,64,14,9,9,9,9,14,1,14,16, +16,32,12,3,4,6,9,19,14,9,9,72,37,25,25,1,15,15,24,8,8,9,8,11,12,8,16,13,34,14,14,1, +1,25,25,37,22,2,2,22,22,2,2,22,176,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88, +9,14,14,10,87,9,1,10,8,12,1,0,14,8,9,1,9,9,14,14,9,9,96,18,9,9,8,16,7,12,12,12, +17,1,47,9,9,14,64,1,24,25,38,27,22,21,11,8,8,12,11,8,8,9,16,13,34,20,19,25,38,25,25,112, +2,22,22,2,2,22,22,2,48,11,35,1,46,14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10, +96,10,13,13,9,9,0,0,0,4,0,8,255,224,1,224,1,160,0,31,0,60,0,69,0,104,0,0,1,20,23,49, +22,51,23,50,55,54,53,52,39,38,35,53,38,39,38,15,1,6,7,6,23,22,23,21,34,7,6,21,23,6,7,49, +6,7,20,23,22,23,7,6,21,20,23,22,51,50,55,54,55,54,55,54,39,38,39,38,35,21,38,39,54,55,22,23, +6,7,37,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,52,47,1,38,35,34,15,1,6, +21,22,23,22,51,1,64,9,9,14,64,14,9,9,9,9,14,1,14,16,16,32,12,3,4,6,9,19,14,9,9,72, +37,25,25,1,15,15,24,8,8,9,8,11,12,8,16,13,34,14,14,1,1,25,25,37,22,2,2,22,22,2,2,22, +254,160,14,10,32,9,9,13,13,9,10,33,10,13,12,11,9,1,8,88,10,14,14,10,87,9,1,9,10,12,1,0, +14,8,9,1,9,9,14,14,9,9,96,18,9,9,8,16,7,12,12,12,17,1,47,9,9,14,64,1,24,25,38,27, +22,21,11,8,8,12,11,8,8,9,16,13,34,20,19,25,38,25,25,112,2,22,22,2,2,22,22,2,176,11,35,254, +210,14,9,9,9,9,14,1,46,35,10,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,0,0,0,2,0,0, +255,224,2,0,1,160,0,20,0,75,0,0,55,53,52,39,38,43,1,34,7,6,29,1,20,23,22,59,1,22,55,54, +53,37,38,39,49,38,39,35,54,55,54,53,52,39,38,39,34,7,6,7,6,7,6,15,1,6,21,48,49,21,22,31, +1,22,59,1,54,55,54,55,52,39,54,55,52,39,54,55,54,53,52,39,54,55,54,53,128,9,9,14,64,14,9,9, +9,9,14,64,14,9,9,1,128,1,13,14,20,146,17,8,9,13,13,23,24,9,9,6,6,12,13,30,16,18,1,18, +34,43,53,59,20,14,13,1,1,31,2,7,17,11,11,13,19,13,13,1,224,13,9,9,9,9,13,223,14,8,9,1, +8,9,14,223,20,14,13,1,29,27,28,12,18,15,14,1,13,13,21,21,24,25,25,13,15,22,160,24,14,26,32,1, +13,14,20,5,6,11,34,14,11,3,13,13,18,19,13,2,13,13,20,0,0,2,0,0,255,224,2,0,1,160,0,20, +0,74,0,0,19,35,34,7,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,5,54,53,52,39,38,39, +54,53,38,39,54,53,38,39,38,39,35,34,15,1,6,7,21,48,49,20,31,1,22,23,22,23,22,23,22,51,54,55, +54,53,52,39,38,39,51,54,55,54,55,52,39,38,39,96,64,14,9,9,9,9,14,64,14,9,9,9,9,14,1,115, +13,11,11,17,7,2,31,1,1,13,14,20,59,53,43,34,18,1,18,16,30,13,12,6,6,9,9,24,23,13,13,9, +8,18,147,20,14,13,1,13,13,19,1,160,9,9,13,223,14,8,9,9,9,13,222,14,9,9,208,13,19,18,13,13, +3,11,15,34,11,4,6,20,14,13,1,32,26,14,23,160,22,15,13,25,25,25,21,21,13,13,1,14,15,18,13,27, +27,29,1,13,14,20,20,13,13,2,0,0,0,1,0,0,255,192,1,64,1,192,0,35,0,0,55,54,51,49,50,31, +1,17,52,55,54,51,50,23,22,21,17,55,54,51,50,23,22,21,20,15,1,6,35,34,47,1,38,53,52,55,9,10, +13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10,13,13,10,128,9,9,119,9,9,74,1,115,14, +9,9,9,9,14,254,141,74,9,9,10,13,13,10,128,9,9,128,10,13,13,10,0,0,0,1,0,0,255,192,1,64, +1,192,0,35,0,0,1,6,35,49,34,47,1,17,20,7,6,35,34,39,38,53,17,7,6,35,34,39,38,53,52,63, +1,54,51,50,31,1,22,21,20,7,1,55,10,13,13,10,73,9,9,14,14,9,9,73,10,13,13,10,9,9,128,10, +13,13,10,128,9,9,1,9,9,9,74,254,141,14,9,9,9,9,14,1,115,74,9,9,10,13,13,10,128,9,9,128, +10,13,13,10,0,1,0,0,0,32,2,0,1,96,0,34,0,0,63,1,54,51,50,23,22,21,20,15,1,33,50,23, +22,21,20,7,6,35,33,23,22,21,20,7,6,35,34,47,1,38,53,52,55,9,128,10,13,13,10,9,9,74,1,115, +14,9,9,9,9,14,254,141,74,9,9,10,13,13,10,128,9,9,215,128,9,9,10,13,13,10,73,9,9,14,14,9, +9,73,10,13,13,10,9,9,128,10,13,13,10,0,0,0,0,1,0,0,0,32,2,0,1,96,0,32,0,0,37,7, +6,35,34,39,38,53,52,63,1,33,34,39,38,53,54,55,33,39,38,53,52,55,54,51,50,31,1,22,21,20,7,1, +247,128,10,13,13,10,9,9,74,254,141,14,9,9,3,29,1,115,74,9,9,10,13,13,10,128,9,9,169,128,9,9, +10,13,13,10,73,9,10,14,29,2,73,10,13,13,10,9,9,128,10,13,13,10,0,0,0,2,0,0,255,192,1,63, +1,192,0,17,0,80,0,0,19,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,3,35,34,39,38,63, +1,7,6,7,6,39,38,39,38,63,1,54,55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,23,22, +7,6,43,1,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,112,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,24,18,8,5,4,2,38,34,7,12,13,11,12,3,3,7,53,16,25,25,30,12, +30,25,25,16,53,7,3,3,11,12,13,12,7,34,37,3,4,5,8,18,9,9,14,14,9,9,16,9,9,14,14,9, +9,1,144,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,176,7,6,8,115,57,11,3,3,7,7,12, +13,11,90,25,14,15,15,14,25,90,11,13,12,7,7,3,3,11,57,115,8,6,7,96,14,9,9,9,9,14,96,96, +14,9,9,9,9,14,96,0,0,2,0,0,255,192,1,63,1,192,0,17,0,68,0,0,19,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35,34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54, +55,54,59,1,50,23,22,31,1,22,7,6,7,6,39,38,47,1,21,20,7,6,35,34,39,38,61,1,35,208,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,56,9,9,14,14,9,9,29,7,12,13,11,12,3,3,7,58,13, +22,21,26,30,26,21,22,13,58,7,3,3,11,12,13,12,7,29,9,9,14,14,9,9,16,1,144,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,254,208,128,14,9,9,9,9,14,223,48,11,3,3,7,7,12,13,11,97,22, +13,12,12,13,22,97,11,13,12,7,7,3,3,11,48,223,14,9,9,9,9,14,128,0,0,3,0,0,255,192,2,0, +1,193,0,17,0,66,0,84,0,0,1,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,39,55,54, +39,38,47,2,38,39,38,15,1,39,38,7,6,15,2,6,7,6,31,1,7,6,23,22,31,2,22,23,22,63,1,23, +22,55,54,63,2,54,55,54,39,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,0,41,26,27, +1,1,26,27,41,41,27,26,1,1,27,26,41,253,63,63,5,3,3,9,109,19,2,7,8,7,91,92,7,7,8,2, +18,109,9,3,3,5,63,63,5,3,3,9,109,19,2,7,8,7,91,91,7,8,7,2,19,109,9,3,3,5,253,54, +36,36,1,1,36,36,54,54,36,36,1,1,36,36,54,1,33,1,27,27,40,40,28,28,1,1,27,27,40,40,28,28, +1,188,92,91,7,7,8,2,19,109,9,3,3,5,64,63,5,3,3,9,109,19,2,7,7,7,92,91,7,8,7,2, +19,109,9,3,3,5,63,63,5,3,3,9,109,19,2,7,8,7,36,1,36,36,54,54,36,36,1,1,36,36,54,54, +36,36,1,0,0,1,0,32,255,224,1,176,1,160,0,40,0,0,55,54,55,49,54,55,49,54,55,50,23,22,23,22, +23,22,7,6,7,6,7,22,23,22,23,22,55,54,23,22,7,6,7,6,35,38,39,38,39,38,39,32,1,30,29,51, +50,63,9,11,12,9,7,1,1,6,42,23,23,1,1,29,29,47,47,56,7,3,4,4,32,45,45,52,63,50,51,29, +30,1,192,63,50,51,29,30,1,1,1,2,2,6,7,4,24,41,40,48,55,43,42,21,21,10,1,6,6,6,39,22, +22,1,30,29,51,50,63,0,0,3,0,0,255,224,2,0,1,160,0,13,0,26,0,43,0,0,55,22,23,49,22,23, +33,54,55,54,55,17,33,17,55,54,55,51,22,23,21,6,7,35,38,39,53,37,33,34,7,6,29,1,22,23,33,54, +55,53,52,39,38,35,32,1,13,14,20,1,96,20,14,13,1,254,64,128,1,11,168,11,1,1,11,168,11,1,1,64, +254,64,14,9,9,1,15,1,224,15,1,9,9,14,16,20,14,13,1,1,13,14,20,1,16,254,240,196,11,1,1,11, +8,11,1,1,11,8,204,9,9,14,48,15,1,1,15,48,14,9,9,0,0,2,0,0,255,192,2,0,1,192,0,19, +0,119,0,0,1,21,20,7,6,43,1,34,39,38,61,1,54,55,54,55,22,23,22,23,5,54,51,49,50,31,1,22, +23,54,59,1,50,23,52,63,1,54,51,50,23,22,21,20,15,1,34,21,48,21,22,23,51,50,23,22,21,20,7,6, +43,1,20,7,22,31,1,22,21,20,7,6,35,34,47,1,6,7,53,38,39,6,7,21,38,39,7,6,35,34,39,38, +53,52,63,1,54,55,38,53,35,34,39,38,53,52,55,54,59,1,54,55,38,47,1,38,53,52,55,49,1,96,8,8, +12,136,12,8,9,1,27,27,41,42,27,27,1,254,201,10,13,13,10,64,1,1,21,25,113,26,22,1,64,10,13,13, +10,9,9,64,2,9,2,64,14,9,9,9,9,14,64,15,3,3,64,9,9,10,13,13,10,63,37,53,1,16,14,2, +51,38,63,10,13,13,10,9,9,64,3,3,15,64,14,9,9,9,9,14,64,2,9,1,1,64,9,9,1,96,4,12, +8,8,8,8,12,4,41,27,27,1,1,27,27,41,9,9,9,64,1,1,11,11,1,1,64,9,9,10,13,13,10,64, +1,1,18,21,9,9,14,14,9,9,37,32,2,2,64,10,13,13,10,9,9,63,33,6,239,15,1,1,15,239,6,33, +63,9,9,10,13,13,10,64,2,2,32,37,9,9,14,14,9,9,21,18,1,1,64,10,13,13,10,0,0,2,0,0, +255,224,1,192,1,160,0,20,0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,3,6,7,6,35,34,47,1,38,53,52,63,1,54,23,22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,1,18,18,27,96,1,13,5,5,9,7,112,8,8,112,11,15,13,1,1,160,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,184,15,7,2,6,104,8,10,10,8,104,9,5,7,15,208,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,44,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6, +7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,41,27,27,1,1,27,27,41, +41,27,27,1,1,27,27,41,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,0,3,0,0,255,192,1,255,1,192,0,44, +0,72,0,90,0,0,37,38,39,49,38,15,1,39,38,43,1,39,51,50,55,54,53,52,39,38,43,1,39,38,39,38, +7,6,7,6,31,1,22,23,51,23,22,23,50,63,1,54,55,54,39,5,38,39,49,38,39,54,55,54,55,39,6,7, +6,7,22,23,22,23,54,55,54,55,35,6,7,6,7,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,1,254,4,12,11,13,20,41,9,21,98,10,65,14,9,9,9,9,14,79,1,4,15,16,20,20,12,11,3,23,5, +27,141,45,9,21,5,5,48,13,6,5,4,254,162,48,31,32,1,1,25,25,39,8,57,36,36,1,2,45,45,68,59, +43,42,13,49,12,29,28,39,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,26,13,6,5,4,6,100, +20,48,9,9,14,14,9,9,7,20,12,11,3,3,15,15,21,140,27,2,108,19,1,2,16,4,12,11,13,42,1,32, +31,48,42,29,30,9,47,12,42,43,60,68,45,45,2,1,36,35,56,35,22,22,1,1,112,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,0,0,0,0,1,0,0,255,224,1,64,1,160,0,86,0,0,19,51,22,23,22,21, +20,7,6,43,1,21,51,22,23,22,21,20,7,6,43,1,6,7,21,51,50,23,22,21,20,7,6,35,33,38,39,38, +63,1,54,55,35,34,39,38,53,52,55,54,59,1,53,35,34,39,38,53,52,55,54,59,1,53,54,55,54,55,50,31, +1,22,23,22,7,6,7,6,47,1,38,35,6,7,6,15,1,111,113,14,9,9,9,9,14,113,113,14,9,9,9,9, +14,113,4,18,199,14,9,9,9,9,14,255,0,18,10,8,9,29,9,3,14,14,9,9,9,9,14,16,16,14,9,9, +9,9,14,16,1,37,36,54,21,19,82,13,6,5,4,4,12,11,13,81,10,11,27,18,18,1,1,1,1,1,9,9, +13,14,9,9,32,1,9,9,13,14,10,9,34,29,1,9,9,14,14,9,9,1,15,16,16,50,14,16,9,9,14,14, +9,9,32,9,9,14,14,9,9,32,54,36,37,1,7,27,4,12,11,13,13,6,5,4,27,3,1,18,18,27,31,0, +0,4,0,0,255,224,2,128,1,160,0,6,0,13,0,57,0,72,0,0,23,35,53,51,7,6,7,19,35,53,51,50, +31,1,35,22,23,33,50,23,22,23,22,7,6,7,6,35,33,6,7,35,21,35,38,39,38,39,53,51,34,39,38,61, +1,52,55,54,51,35,53,54,55,54,55,51,21,51,5,34,29,1,20,51,50,55,54,61,1,52,39,38,35,129,1,224, +107,53,63,223,224,1,63,53,107,248,41,23,1,32,53,46,46,34,10,10,34,46,46,53,254,224,23,41,8,16,20,14, +13,1,8,17,11,12,12,11,17,8,1,13,14,20,16,8,1,116,4,4,16,10,10,10,10,16,32,96,64,31,1,1, +96,96,32,64,1,31,19,19,44,14,14,44,19,19,31,1,96,1,13,14,20,48,12,11,17,176,17,11,12,48,20,14, +13,1,96,80,4,88,4,10,10,16,24,16,10,10,0,0,0,3,0,0,255,224,1,192,1,160,0,20,0,39,0,55, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,17,20,7,49,6,35,33,34,39, +38,61,1,23,22,51,50,63,1,21,53,7,6,47,1,53,52,55,54,51,33,50,23,22,29,1,1,128,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,9,9,14,255,0,14,9,9,139,10,11,11,10,139,153,7, +7,153,9,9,14,1,0,14,9,9,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +254,208,14,9,9,9,9,14,110,69,5,5,69,110,146,77,3,3,77,14,14,9,9,9,9,14,14,0,0,3,0,0, +255,192,2,0,1,192,0,21,0,39,0,74,0,0,19,54,31,1,22,7,6,7,21,6,7,33,34,39,38,61,1,38, +39,38,63,1,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,3,51,53,51,21,51,53,51,21,51, +53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48,49,53,51,21,243,13,13,224,22,4,6, +26,1,23,254,112,10,7,7,24,6,4,22,224,13,14,9,9,9,9,14,14,9,9,9,9,14,129,40,64,49,64,40, +64,1,1,48,18,5,8,23,254,63,22,8,5,18,48,1,64,1,189,6,6,96,11,24,24,2,8,22,2,7,7,10, +8,2,24,24,11,96,125,9,9,14,14,9,9,9,9,14,14,9,9,254,224,192,192,192,192,192,196,1,32,14,22,22, +1,1,22,22,14,32,1,196,192,0,0,0,0,2,0,0,255,224,2,128,1,160,0,36,0,53,0,0,1,37,38,7, +5,6,7,22,31,1,6,7,6,7,22,23,7,6,23,51,54,47,1,54,55,38,39,54,55,23,22,55,37,54,55,38, +39,5,6,35,34,47,1,7,22,23,22,23,54,55,54,55,39,7,2,111,254,229,21,21,254,230,15,1,1,15,60,18, +6,19,1,1,11,25,1,17,58,17,1,25,11,1,1,12,7,18,191,21,21,1,27,15,1,1,16,254,240,14,17,16, +16,145,15,2,54,54,82,81,54,55,2,15,146,1,55,101,8,8,101,6,17,17,6,22,24,30,8,21,15,9,149,17, +2,2,17,149,9,15,16,9,27,20,68,8,8,101,6,17,17,6,177,6,6,51,142,32,21,21,1,1,21,21,32,143, +52,0,0,0,0,5,0,0,0,0,2,128,1,128,0,57,0,61,0,83,0,88,0,106,0,0,1,22,23,21,51,22, +23,6,7,35,7,6,7,48,51,48,31,1,22,7,6,47,1,38,39,38,39,6,15,1,6,39,38,63,1,54,55,54, +55,39,38,55,54,31,1,49,54,55,35,38,39,54,55,51,53,54,55,21,5,23,35,55,39,54,55,49,54,55,33,22, +23,22,23,17,6,7,6,7,33,38,39,38,39,17,1,33,17,33,17,39,38,39,6,15,1,6,23,22,63,1,51,23, +22,55,54,47,1,1,192,18,2,60,18,2,2,18,2,2,13,26,1,1,19,15,8,11,16,19,2,2,5,4,16,18, +4,17,9,6,16,4,5,5,4,4,12,12,12,14,14,15,19,11,107,19,1,1,19,52,1,19,254,224,19,39,20,160, +1,18,18,27,2,0,27,18,18,1,1,18,18,27,254,0,27,18,18,1,1,64,1,0,255,0,142,5,13,13,5,64, +6,16,17,9,9,74,9,9,17,16,6,64,1,28,1,19,4,1,19,18,2,5,36,29,2,11,11,16,15,8,11,1, +1,3,4,12,8,1,6,16,17,9,2,2,3,3,2,12,14,14,12,12,14,18,27,1,19,18,2,4,18,2,1,69, +43,43,105,27,18,18,1,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,255,0,1,0,255,0,208,11,1, +1,11,144,17,9,6,16,21,21,16,6,9,17,144,0,0,0,7,0,0,255,192,2,0,1,192,0,18,0,39,0,56, +0,69,0,82,0,95,0,108,0,0,19,51,23,21,51,53,52,47,1,38,43,1,34,7,6,29,1,51,53,7,35,34, +7,6,21,17,20,23,22,59,1,50,55,54,53,17,52,39,38,35,5,33,17,20,23,22,51,33,50,55,54,53,17,52, +39,38,35,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,23,6,7, +35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,192,198,26,64,9,46,9,13,243, +14,9,9,64,128,32,14,9,9,9,9,14,32,14,9,9,9,9,14,1,160,254,160,9,9,14,1,64,14,9,9,9, +9,14,192,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,128,1,15,32,15,1,1,15,32, +15,1,1,15,32,15,1,1,15,32,15,1,1,128,27,69,83,13,9,46,9,9,9,14,128,96,64,9,9,14,254,192, +14,9,9,9,9,14,1,64,14,9,9,64,254,224,14,9,9,9,9,14,1,0,14,9,9,240,15,1,1,15,32,15, +1,1,15,32,128,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32, +15,1,1,15,32,0,0,0,0,7,0,0,255,192,1,128,1,192,0,32,0,45,0,58,0,71,0,84,0,97,0,110, +0,0,1,22,23,49,22,23,17,6,7,6,7,35,53,38,39,38,39,6,7,6,7,21,35,38,39,38,39,17,54,55, +54,55,33,1,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,39,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39, +35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,1,80,20,14,13,1,1,13,14,20,96,1,13,14,20, +20,14,13,1,96,20,14,13,1,1,13,14,20,1,32,254,240,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15, +32,15,1,1,15,32,80,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32,80,1,15,32, +15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,1,192,1,13,14,20,254,96,20,14,13,1,80,20, +14,13,1,1,13,14,20,80,1,13,14,20,1,160,20,14,13,1,254,240,15,1,1,15,32,15,1,1,15,32,48,1, +15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,176,1,15,32,15,1,1,15,32,15,1,48, +15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,0,0,0,0,2,0,0,255,192,1,63, +1,192,0,17,0,67,0,0,19,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,3,21,20,7,6,35, +34,39,38,61,1,7,6,7,6,39,38,39,38,63,1,54,55,54,51,50,23,22,31,1,22,7,6,7,6,39,38,47, +1,21,20,7,6,35,34,39,38,61,1,35,224,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,80,9,9, +14,14,9,9,21,7,13,12,12,11,3,3,7,40,19,30,30,36,36,30,30,19,40,7,3,3,11,12,12,13,7,21, +9,9,14,14,9,9,32,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,254,192,96,14,9,9,9, +9,14,192,33,11,3,3,7,7,13,13,12,62,30,17,17,17,17,30,62,12,13,13,7,7,3,3,11,33,192,14,9, +9,9,9,14,96,0,0,0,0,5,0,0,255,224,2,0,1,160,0,17,0,35,0,73,0,91,0,109,0,0,19,22, +7,49,6,7,6,39,38,39,38,55,54,55,54,23,22,23,7,22,7,49,6,7,6,39,38,39,38,55,54,55,54,23, +22,23,7,54,55,49,54,55,49,54,23,54,23,22,23,22,23,22,29,1,20,7,6,7,34,47,1,38,15,1,6,35, +34,39,38,39,53,52,55,49,37,38,39,49,38,55,54,55,54,23,22,23,22,7,6,7,6,47,1,38,39,49,38,55, +54,55,54,23,22,23,22,7,6,7,6,39,227,10,9,10,24,25,24,24,11,11,9,10,24,25,24,24,12,127,14,2, +3,19,19,22,22,15,14,2,3,19,19,22,22,15,31,27,36,35,34,33,22,22,33,34,35,36,27,5,14,13,20,17, +17,88,24,22,88,17,17,20,13,13,1,5,1,97,19,3,2,14,15,22,22,19,19,3,2,14,15,22,22,19,112,24, +10,9,11,11,24,24,25,24,10,9,10,12,24,24,25,1,99,33,27,28,9,7,17,16,33,33,27,28,9,7,17,16, +33,106,25,24,23,12,10,9,10,25,25,24,23,12,10,9,10,25,202,70,39,38,15,16,1,1,16,15,38,39,70,15, +16,1,20,13,13,1,4,22,6,6,22,4,14,13,20,1,16,15,118,12,23,24,25,25,10,9,10,12,23,24,25,25, +10,9,10,93,9,28,27,33,33,16,17,7,9,28,27,33,33,16,17,7,0,3,0,0,255,194,2,0,1,190,0,26, +0,31,0,36,0,0,19,54,31,1,22,23,22,29,1,20,7,6,15,1,6,47,1,38,39,38,61,1,52,55,54,63, +1,23,7,23,55,39,19,55,53,7,21,235,21,22,192,18,12,12,12,12,18,192,22,21,193,19,11,12,12,11,19,193, +21,174,174,174,174,32,160,160,1,186,8,8,68,7,17,16,21,242,21,16,17,7,68,8,8,68,7,17,16,21,242,21, +16,17,7,68,60,62,62,62,62,254,143,58,188,58,188,0,0,7,0,0,255,192,2,64,1,192,0,35,0,42,0,47, +0,54,0,59,0,66,0,74,0,0,19,55,54,31,1,22,23,21,50,51,23,22,23,21,6,15,1,6,47,1,7,6, +47,1,38,39,53,54,63,1,50,51,53,54,55,49,23,38,15,1,23,55,39,23,53,7,21,55,7,38,15,1,23,55, +39,23,55,53,7,21,55,23,55,39,38,15,1,23,53,7,21,55,54,53,49,172,96,20,20,96,34,2,2,2,96,34, +2,1,32,96,23,22,114,113,23,22,97,32,1,2,34,96,2,2,2,34,119,4,2,78,80,82,78,101,82,82,237,4, +2,78,81,81,78,19,82,82,169,81,81,78,4,2,78,185,82,77,5,1,152,36,8,8,36,15,38,112,37,15,38,119, +35,16,42,10,10,49,49,10,10,42,16,35,119,38,15,37,112,38,15,9,1,1,29,32,32,29,162,90,32,89,31,40, +1,1,30,31,31,30,204,36,96,32,100,174,31,31,30,1,1,30,133,91,32,100,34,2,5,0,0,0,0,3,0,0, +255,203,2,0,1,192,0,37,0,72,0,109,0,0,55,22,7,49,6,47,1,7,6,23,22,23,51,50,23,22,21,20, +7,6,43,1,38,39,38,39,38,63,1,39,38,55,54,63,1,54,31,1,55,23,7,6,23,22,31,1,22,63,1,54, +39,38,15,1,39,38,35,34,15,1,6,23,22,23,22,55,54,63,1,54,51,50,31,1,39,38,39,38,7,6,7,6, +31,1,22,7,6,7,35,53,38,39,38,15,1,6,31,1,22,55,54,55,53,51,54,55,54,55,54,39,180,3,12,12, +15,24,51,10,9,9,19,32,14,9,9,9,9,14,32,38,25,26,6,6,20,51,25,13,2,3,15,92,14,5,21,103, +41,24,13,2,3,15,92,14,5,21,3,12,12,15,24,42,31,50,50,31,8,7,3,3,11,12,12,13,7,8,10,17, +17,10,214,17,7,13,12,12,11,3,3,7,17,10,9,9,19,96,1,14,14,12,66,10,10,66,12,14,14,1,96,38, +25,26,6,6,20,205,16,9,9,8,15,81,17,16,15,1,9,9,14,14,9,9,1,23,23,33,34,33,81,15,10,15, +14,5,21,2,14,91,164,66,15,10,14,15,5,21,2,14,91,17,8,9,8,15,66,45,45,12,12,12,12,8,7,3, +3,11,12,15,15,222,27,11,3,3,7,7,13,12,12,27,17,16,15,1,29,16,6,6,11,67,11,11,67,11,6,6, +16,29,1,23,23,33,34,33,0,4,0,0,255,224,2,0,1,160,0,43,0,52,0,70,0,88,0,0,63,1,54,55, +54,59,1,50,23,22,31,1,22,23,22,29,1,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39, +38,61,1,52,55,54,55,49,55,33,39,38,39,35,6,15,2,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39, +38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,40,35,10,25,24,31,182,31,24,25,10,35, +18,11,11,9,9,14,32,14,9,9,254,192,9,9,14,32,14,9,9,11,11,18,69,1,38,26,8,22,182,22,8,26, +13,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,251,101,29,17,18, +18,17,29,101,7,16,16,20,192,14,9,9,9,9,14,48,48,14,9,9,9,9,14,192,20,16,16,7,5,75,20,1, +1,20,75,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,4,0,32,255,192,2,32,1,192,0,55,0,64,0,82,0,100,0,0,1,50,23,49,22,29,1,49,22,23,22,31, +1,22,23,22,29,1,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39,38,61,1,52,55,54,63, +1,54,55,54,55,49,53,52,55,54,59,1,7,6,15,1,33,39,38,39,35,7,50,55,49,54,53,52,39,38,35,34, +7,6,21,20,23,22,51,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,96,14,9,9,29,23, +23,10,35,18,11,11,9,9,14,32,14,9,9,254,192,9,9,14,32,14,9,9,11,11,18,35,10,23,23,29,9,9, +14,128,155,22,8,26,1,38,26,8,22,182,69,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9, +14,14,9,9,9,9,14,1,192,9,9,14,32,2,17,17,28,101,7,16,16,20,192,14,9,9,9,9,14,48,48,14, +9,9,9,9,14,192,20,16,16,7,101,28,17,17,2,32,14,9,9,128,1,20,75,75,20,1,224,9,9,14,14,9, +9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,1,0,0,255,192,1,192,1,192,0,50, +0,0,37,7,21,20,7,6,35,34,39,38,61,1,35,38,39,38,63,1,35,38,39,38,63,1,35,38,39,38,63,1, +54,51,50,31,1,22,7,6,7,35,23,22,7,6,7,35,23,22,7,6,7,1,158,158,9,9,14,14,9,9,159,22, +8,8,13,69,15,19,8,7,12,60,11,16,7,6,10,135,8,11,11,8,135,10,6,7,16,11,61,11,7,8,19,15, +69,13,8,9,22,1,1,32,14,9,9,9,9,14,32,1,19,18,18,80,1,16,16,16,71,1,12,12,12,147,8,8, +147,12,12,12,1,71,16,16,16,1,80,18,18,18,1,0,0,3,0,0,255,192,1,192,1,192,0,18,0,38,0,57, +0,0,1,21,6,7,6,7,38,39,38,39,53,54,55,54,55,22,23,22,23,7,54,55,21,6,7,6,7,38,39,38, +39,53,22,23,22,23,54,55,49,5,22,23,54,55,54,55,21,6,7,6,7,38,39,38,39,53,22,23,1,192,2,64, +63,95,95,63,64,2,2,64,63,95,95,63,64,2,55,31,24,2,64,63,95,95,63,64,2,23,32,70,99,99,70,254, +174,70,99,99,70,31,24,2,64,63,95,95,63,64,2,23,32,1,112,48,34,23,22,1,1,22,23,34,48,34,23,22, +1,1,22,23,34,135,11,18,102,34,23,22,1,1,22,23,34,102,18,11,24,1,1,24,160,24,1,1,24,11,18,86, +34,23,22,1,1,22,23,34,86,18,11,0,0,7,0,0,255,192,1,128,1,192,0,7,0,16,0,39,0,58,0,75, +0,97,0,101,0,0,55,35,53,51,22,23,6,7,55,51,22,23,21,6,7,35,53,19,21,20,23,22,59,1,17,6, +7,6,7,33,38,39,38,39,17,54,55,54,55,51,7,6,7,21,22,23,54,55,53,51,54,55,54,55,38,39,38,39, +35,23,22,23,51,54,55,54,55,53,38,39,38,39,35,6,7,21,55,6,7,21,22,23,54,55,53,51,54,55,38,39, +35,53,51,54,55,38,39,35,39,23,35,53,88,8,8,22,2,2,22,104,8,15,1,1,15,8,32,9,9,14,128,1, +18,18,27,255,0,27,18,18,1,1,18,18,27,160,160,15,1,1,15,15,1,8,24,16,15,1,1,15,16,24,24,96, +1,15,24,20,14,13,1,1,13,14,20,24,15,1,128,15,1,1,15,15,1,32,15,1,1,15,32,32,15,1,1,15, +48,32,128,128,144,48,2,22,22,2,48,1,15,64,15,1,96,1,0,128,14,9,9,254,224,27,18,18,1,1,18,18, +27,1,128,27,18,18,1,224,1,15,128,15,1,1,15,32,1,15,16,24,24,16,15,1,144,15,1,1,13,14,20,64, +20,14,13,1,1,15,128,144,1,15,128,15,1,1,15,48,1,15,15,1,32,1,15,15,1,224,128,128,0,3,0,0, +255,192,1,128,1,192,0,22,0,56,0,60,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17, +35,34,39,38,53,23,51,22,15,1,6,7,35,38,47,1,7,6,43,1,38,47,1,38,55,51,22,31,1,55,54,59, +1,22,31,1,55,54,55,39,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,58, +23,13,1,43,2,9,30,9,2,30,30,3,8,29,10,2,43,1,13,23,10,2,24,28,2,9,30,9,2,28,24,2, +10,26,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,112,2,13,184,8,1, +1,8,110,109,10,1,8,184,13,2,1,8,103,103,9,1,8,103,103,8,1,240,128,128,0,3,0,0,255,192,1,128, +1,192,0,22,0,59,0,63,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38, +53,23,7,23,22,7,6,7,35,34,47,1,7,6,43,1,38,39,38,63,1,39,38,55,54,55,51,50,31,1,55,54, +59,1,22,23,22,7,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,48,48, +49,5,5,4,10,26,9,5,27,27,5,9,26,10,4,5,5,49,49,5,5,4,10,26,9,5,27,27,5,9,26,10, +4,4,5,16,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,136,80,80,8, +8,7,1,8,44,44,8,1,7,8,8,80,80,8,8,7,1,8,44,44,8,1,7,8,8,1,8,128,128,0,0,0, +0,4,0,0,255,192,1,128,1,192,0,3,0,26,0,47,0,59,0,0,1,21,51,39,7,53,35,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,22,7,49,6,7,35,21,6,7,35,38,39,53,54,55,51, +22,23,22,23,7,51,50,55,54,53,52,39,38,43,1,21,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32, +20,14,13,1,127,14,10,9,56,2,22,22,34,44,1,15,16,15,1,1,15,72,30,23,23,4,120,44,12,8,8,8, +8,12,44,1,192,128,128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,180,35,24,24, +1,40,15,1,1,15,176,15,1,1,18,19,30,36,8,8,12,12,8,8,56,0,0,0,0,4,0,0,255,192,1,128, +1,192,0,22,0,40,0,62,0,66,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34, +39,38,53,7,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,23,6,43,1,34,39,38,63,1,54,51, +50,31,1,55,54,51,50,31,1,22,7,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127, +14,10,9,128,14,9,9,9,9,14,14,9,9,9,9,14,222,5,9,224,9,5,4,5,53,4,9,9,5,13,45,5, +9,8,5,85,5,4,62,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,96, +9,9,14,14,9,9,9,9,14,14,9,9,216,8,8,9,8,80,7,7,20,68,7,7,128,8,9,1,184,128,128,0, +0,7,0,0,255,192,1,128,1,192,0,3,0,26,0,31,0,36,0,41,0,54,0,65,0,0,1,21,51,39,7,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,51,21,35,53,21,51,21,35,53,21, +51,21,35,53,23,38,39,49,38,63,1,51,23,22,7,6,7,55,35,6,7,22,23,51,54,55,38,39,1,0,128,128, +32,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,128,64,64,64,64,64,64,32,31,18,19,5, +31,64,31,5,18,19,31,16,32,15,1,1,15,32,15,1,1,15,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,96,32,32,64,32,32,64,32,32,255,1,22,22,30,116,117,30,22,21,1,79, +1,15,15,1,1,15,15,1,0,5,0,0,255,192,1,128,1,192,0,22,0,42,0,61,0,85,0,89,0,0,19,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,3,6,7,49,6,47,1,35,38,39,53, +54,55,51,55,54,23,22,23,21,55,34,39,38,55,54,53,52,39,38,55,54,23,22,23,20,7,6,35,55,20,7,49, +6,7,6,35,34,39,38,55,54,55,38,39,38,55,54,23,22,23,22,21,3,21,51,39,224,176,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,127,14,10,9,48,1,6,7,6,36,44,11,1,1,11,44,36,6,7,6,1,48,7,5, +9,10,11,11,10,9,11,12,20,1,21,5,6,96,15,14,26,4,5,8,5,7,11,40,1,1,40,11,7,9,13,26, +14,15,64,128,128,1,64,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,254,236,8,3,3, +6,36,1,11,56,11,1,36,6,3,3,8,136,16,6,11,11,10,14,14,10,11,11,10,8,20,28,28,20,4,52,32, +27,28,18,3,7,13,9,29,50,49,30,9,13,11,7,18,28,27,32,1,80,128,128,0,0,4,0,0,255,192,1,128, +1,192,0,3,0,26,0,48,0,61,0,0,1,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54, +55,17,35,34,39,38,53,17,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,55,21,6, +7,6,47,1,53,55,54,23,22,23,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14, +10,9,9,9,14,96,14,9,9,9,9,14,96,14,9,9,96,1,7,8,8,40,40,8,8,7,1,1,192,128,128,128, +128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,255,0,14,9,9,9,9,14,96,14,9,9, +9,9,14,96,99,102,10,4,4,4,25,80,25,4,4,4,10,0,0,0,0,4,0,0,255,192,1,128,1,192,0,22, +0,39,0,56,0,60,0,0,19,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,7, +22,7,6,35,34,47,1,38,63,1,54,23,22,15,1,23,55,22,15,1,6,35,34,39,38,63,1,39,38,55,54,31, +1,3,21,51,39,224,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,70,12,12,6,8,8,6, +48,12,12,48,14,14,12,12,34,34,152,12,12,48,6,8,8,6,12,12,34,34,12,12,14,14,48,50,128,128,1,64, +128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,226,14,14,6,6,48,14,14,48,12,12,14, +14,34,34,48,14,14,48,6,6,14,14,34,34,14,14,12,12,48,1,50,128,128,0,0,0,6,0,0,255,192,2,0, +1,192,0,57,0,68,0,80,0,92,0,103,0,121,0,0,37,22,21,49,20,7,6,35,34,47,1,6,7,38,39,7, +6,35,34,39,38,53,52,63,1,38,39,54,55,39,38,53,52,55,54,51,50,31,1,54,55,22,23,55,54,51,50,23, +22,21,20,15,1,22,23,6,7,23,39,6,35,34,39,7,22,23,54,55,39,55,38,39,7,22,21,20,7,23,54,55, +53,39,6,7,23,54,55,22,23,55,38,39,35,7,38,39,54,55,39,6,7,22,23,63,1,6,7,49,6,7,22,23, +22,51,50,55,54,53,52,39,38,39,1,215,9,9,10,13,13,10,13,65,92,89,67,12,10,13,13,10,9,9,13,52, +2,2,52,13,9,9,10,13,13,10,12,67,89,92,65,13,10,13,13,10,9,9,13,52,2,2,52,13,162,24,30,28, +24,58,48,62,64,48,58,139,1,34,58,13,13,58,34,1,193,62,48,58,24,28,30,24,58,48,63,1,97,14,1,1, +14,58,35,2,2,35,58,97,20,13,14,1,1,14,13,20,21,14,14,14,14,21,23,10,13,13,10,9,9,13,52,2, +2,52,13,9,9,10,13,13,10,13,65,92,89,67,12,10,13,13,10,9,9,13,52,2,2,52,13,9,9,10,13,13, +10,12,67,89,92,65,13,70,13,13,58,34,1,1,34,58,100,62,48,58,24,29,29,24,58,48,63,1,192,2,35,58, +14,1,1,14,58,35,2,246,24,30,28,24,58,48,62,64,48,58,102,1,14,13,20,21,13,14,14,13,21,20,13,14, +1,0,0,0,0,1,0,0,255,193,2,0,1,182,0,54,0,0,19,22,7,49,6,7,6,7,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,38,39,38,55,54,55,54,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39, +54,55,54,55,54,23,22,23,49,223,3,6,6,13,61,37,38,1,2,54,54,82,82,54,54,2,1,38,37,61,13,6, +6,3,5,11,11,13,81,50,50,2,1,34,34,58,57,72,72,57,58,34,34,1,2,50,50,81,13,11,11,5,1,160, +13,12,11,4,19,49,49,66,82,54,54,2,2,54,54,82,66,49,49,19,4,11,12,13,13,6,6,4,25,65,66,88, +72,58,57,34,34,1,1,34,34,57,58,72,88,66,65,25,4,6,6,13,0,1,0,0,255,192,2,0,1,192,0,28, +0,0,1,3,6,7,6,35,34,47,1,7,6,35,38,39,53,52,55,19,1,39,38,39,52,55,37,54,23,22,7,2, +0,64,3,13,8,8,6,6,123,51,6,11,19,2,7,217,254,218,102,18,2,16,1,192,18,16,16,2,1,155,254,97, +15,8,4,2,51,76,10,2,19,96,11,9,1,23,254,248,42,8,21,20,10,255,9,11,11,20,0,0,0,2,0,0, +255,192,2,0,1,192,0,55,0,71,0,0,1,22,23,49,22,23,49,22,23,6,7,6,7,6,7,38,39,38,39,38, +55,54,55,54,23,22,23,54,55,54,55,38,39,38,39,6,7,23,22,7,6,7,35,38,39,53,54,55,54,31,1,54, +55,54,59,1,21,22,23,21,23,22,7,6,47,1,38,61,1,54,55,49,1,0,72,57,58,34,34,1,1,34,34,58, +57,72,83,63,11,2,3,8,8,12,13,11,48,62,82,54,54,2,2,54,54,82,82,54,31,11,6,5,17,110,22,2, +1,14,13,13,34,35,46,46,53,1,22,2,64,15,15,16,17,72,7,2,22,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,45,9,12,12,11,11,3,2,8,33,1,2,54,54,82,82,54,54,2,2,54,31,12,14,14,1,2,22, +110,17,5,6,11,34,35,20,20,128,2,22,94,65,17,16,15,15,72,6,10,104,22,2,0,1,0,0,255,224,1,192, +1,160,0,85,0,0,37,20,7,49,6,43,1,34,39,38,53,52,55,54,59,1,53,35,21,51,50,23,22,21,20,7, +6,43,1,34,39,38,53,52,55,54,59,1,17,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1, +21,51,53,35,34,39,38,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1,17,51,50,23,22,21,1,192,9,9, +14,96,14,9,9,9,9,14,16,224,16,14,9,9,9,9,14,96,14,9,9,9,9,14,16,16,14,9,9,9,9,14, +96,14,9,9,9,9,14,16,224,16,14,9,9,9,9,14,96,14,9,9,9,9,14,16,16,14,9,9,0,14,9,9, +9,9,14,14,9,9,144,144,9,9,14,14,9,9,9,9,14,14,9,9,1,64,9,9,14,14,9,9,9,9,14,14, +9,9,112,112,9,9,14,14,9,9,9,9,14,14,9,9,254,192,9,9,14,0,0,0,0,1,0,32,255,224,1,192, +1,160,0,41,0,0,1,20,7,49,6,43,1,17,20,7,6,35,34,39,38,53,17,35,17,20,7,6,35,34,39,38, +61,1,35,38,39,38,39,38,55,54,55,51,50,23,22,21,1,192,9,9,14,32,9,9,13,13,10,10,32,9,9,13, +13,10,10,25,65,47,46,8,5,46,46,71,224,14,10,9,1,129,14,10,9,254,160,14,9,9,9,9,14,1,96,254, +160,14,9,9,9,9,14,96,1,40,40,63,74,50,50,2,9,9,13,0,0,6,0,0,255,208,2,0,1,176,0,38, +0,56,0,94,0,112,0,150,0,168,0,0,55,52,55,49,54,59,1,54,55,54,51,50,23,22,23,51,50,23,22,21, +20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39,38,53,49,51,52,39,49,38,35,34,7,6,21,20,23,22, +51,50,55,54,53,55,50,23,49,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39, +38,53,52,55,54,59,1,54,55,54,51,23,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53,55,50,23, +49,22,21,20,7,6,43,1,6,7,6,35,34,39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,51,50,23, +22,23,51,5,20,23,49,22,51,50,55,54,53,52,39,38,35,34,7,6,21,0,9,9,14,55,9,20,19,25,25,19, +19,10,247,14,9,9,9,9,14,247,10,19,19,25,25,19,20,9,55,14,9,9,192,9,9,14,14,9,9,9,9,14, +14,9,9,160,25,19,19,10,55,14,9,9,9,9,14,55,10,19,19,25,25,19,20,9,247,14,9,9,9,9,14,247, +9,20,19,25,32,9,9,14,14,9,9,9,9,14,14,9,9,96,14,9,9,9,9,14,215,10,19,19,25,25,19,20, +9,87,14,9,9,9,9,14,87,9,20,19,25,25,19,19,10,215,254,192,9,9,14,14,9,9,9,9,14,14,9,9, +32,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,240,13,13,22,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13,13,80,14, +9,9,9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,22,13,13,13,13,22,9,9,14,14,9,9,22,13, +13,13,13,22,32,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,1,0,0,255,224,1,192,1,160,0,57, +0,0,37,7,22,7,20,21,20,21,22,7,23,54,55,22,23,22,23,6,7,6,7,38,39,38,39,52,55,39,6,7, +38,39,38,39,54,55,54,55,22,23,55,38,53,54,55,54,55,22,23,22,23,6,7,6,7,38,39,49,1,29,94,1, +1,1,1,94,27,40,41,27,27,1,1,27,27,41,41,27,27,1,1,94,27,40,41,27,27,1,1,27,27,41,40,27, +94,1,1,27,27,41,41,27,27,1,1,27,27,41,40,27,251,47,3,4,2,3,2,2,4,4,47,26,1,1,27,27, +41,41,27,27,1,1,27,27,41,7,5,47,26,1,1,27,27,41,41,27,27,1,1,26,47,7,5,41,27,27,1,1, +27,27,41,41,27,27,1,1,26,0,0,0,0,2,0,0,255,224,1,192,1,160,0,21,0,72,0,0,1,22,23,49, +22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,7,6,7,49,6,7,20,21,7,38,39,6,7,6, +7,22,23,22,23,54,55,23,20,21,22,23,22,23,54,55,54,55,38,39,38,39,34,7,39,55,22,51,54,55,54,55, +38,39,38,39,49,1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,64,27,18,18,1, +81,19,28,27,18,18,1,1,18,18,27,28,19,81,1,18,18,27,27,18,18,1,1,18,18,27,24,17,85,85,17,24, +27,18,18,1,1,18,18,27,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,1, +18,18,27,4,3,45,19,1,1,18,18,27,27,18,18,1,1,20,46,3,4,27,18,18,1,1,18,18,27,27,18,18, +1,15,47,46,14,1,18,18,27,27,18,18,1,0,0,0,0,3,0,0,255,192,2,0,1,192,0,24,0,53,0,74, +0,0,1,23,22,21,6,15,2,6,35,34,47,2,38,53,38,63,2,54,51,50,31,1,7,22,21,49,20,15,1,22, +21,6,7,6,7,38,39,38,39,54,55,54,55,22,23,55,54,51,50,31,1,7,54,55,38,39,35,6,7,6,7,21, +22,23,54,55,53,54,55,54,55,51,1,203,46,7,1,6,46,16,3,8,7,3,17,46,7,1,8,46,17,3,7,7, +4,16,52,9,9,3,12,2,59,59,88,88,59,59,2,2,59,59,88,37,34,2,10,13,13,10,80,200,15,1,1,15, +8,57,39,38,2,2,14,15,1,1,30,30,43,8,1,140,17,3,8,7,3,17,46,7,7,46,17,3,7,8,3,17, +45,7,7,45,133,10,13,13,10,3,33,36,89,59,59,2,2,59,59,89,88,59,59,2,1,12,3,9,9,80,7,1, +15,15,1,1,39,38,58,8,15,1,1,15,8,44,30,29,1,0,0,0,0,3,0,0,255,192,1,255,1,192,0,5, +0,32,0,55,0,0,55,23,51,55,39,7,55,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,19,39,7,6,35,34,47,1,7,38,39,55,39,54,55,23,55,22,23,7,23,6,7,177,31, +96,30,78,79,78,71,57,58,34,34,1,1,34,34,58,57,72,71,58,57,34,34,1,1,34,34,57,58,72,162,86,25, +24,26,26,24,25,86,27,3,69,27,32,49,68,68,49,32,27,69,3,27,219,91,91,57,57,229,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,71,71,58,58,35,34,1,254,151,1,81,7,7,81,1,42,53,50,80,40,19, +51,51,19,40,80,50,53,42,0,13,0,0,255,192,1,255,1,192,0,12,0,25,0,38,0,51,0,64,0,77,0,90, +0,103,0,116,0,129,0,142,0,155,0,184,0,0,37,21,22,23,51,54,55,53,38,39,35,6,7,51,21,22,23,51, +54,55,53,38,39,35,6,7,39,35,6,7,21,22,23,51,54,55,53,54,39,7,35,6,7,21,22,23,51,54,55,53, +38,39,55,21,22,23,51,54,55,53,38,39,35,6,7,55,35,6,7,21,22,23,51,54,55,53,54,39,51,35,6,7, +21,22,23,51,54,55,53,54,39,7,35,6,7,21,22,23,51,54,55,53,52,47,1,35,6,7,21,22,23,51,54,61, +1,54,39,5,35,6,7,21,22,23,51,54,55,53,52,39,37,21,22,23,51,54,55,53,38,39,35,6,7,55,35,6, +7,21,22,23,51,54,55,53,38,39,37,38,39,49,38,7,49,6,7,6,31,1,22,63,1,54,53,39,54,23,7,6, +31,1,22,63,1,54,39,1,15,1,11,40,11,1,1,11,40,10,2,96,1,11,40,11,1,1,11,40,10,2,92,40, +11,1,1,11,39,11,1,1,12,191,40,11,1,1,11,40,11,1,1,11,91,1,11,40,11,1,1,11,40,10,2,196, +40,11,1,1,10,39,11,1,2,12,96,40,11,1,1,11,39,11,1,1,12,96,232,11,1,1,11,232,11,1,12,192, +40,11,1,1,11,39,11,2,12,1,32,40,11,1,1,11,40,11,1,12,254,125,1,11,40,11,1,1,11,40,11,1, +4,40,11,1,1,11,40,11,1,1,11,1,165,70,90,89,89,90,70,12,9,42,11,18,85,15,6,87,87,5,1,15, +85,18,11,42,9,12,84,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,1,11,108,1,11,40,11, +1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,84,40,11,1,1,11,40,11,1,1,11,108,1,11,40, +11,1,1,11,40,11,1,1,11,40,11,1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,192,1,11,40, +11,1,1,11,40,11,1,192,1,11,40,11,1,1,11,40,11,1,84,40,11,1,1,11,40,11,1,1,11,108,1,11, +40,11,1,1,11,40,11,1,153,69,23,22,22,23,69,14,16,67,15,5,34,8,17,53,29,29,53,18,7,34,6,16, +67,16,14,0,0,5,0,0,255,224,2,0,1,160,0,8,0,36,0,62,0,67,0,76,0,0,1,38,39,35,6,7, +21,51,53,5,6,7,49,6,7,49,6,7,49,6,7,21,20,23,22,59,1,50,55,54,53,17,35,34,7,6,7,33, +38,39,49,38,43,1,17,20,23,22,59,1,50,55,54,61,1,38,39,38,39,38,39,38,39,7,51,53,35,21,3,35, +6,7,21,51,53,38,39,1,160,1,15,64,15,1,96,254,160,1,8,8,11,13,10,11,2,9,9,14,128,14,9,9, +96,14,9,8,1,1,128,1,8,9,14,96,9,9,14,128,14,9,9,2,11,10,13,11,8,8,1,224,64,64,48,64, +15,1,96,1,15,1,144,15,1,1,15,48,48,112,32,23,24,22,25,33,33,52,44,14,9,9,9,9,14,1,64,9, +10,13,13,10,9,254,192,14,9,9,9,9,14,44,52,33,33,25,22,24,23,32,128,160,160,1,0,1,15,48,48,15, +1,0,0,0,0,3,0,0,255,192,1,128,1,192,0,12,0,25,0,57,0,0,19,50,23,49,22,29,1,35,53,52, +55,54,59,1,50,23,49,22,29,1,35,53,52,55,54,51,23,50,23,49,22,21,20,7,6,35,21,6,7,6,7,21, +35,53,38,39,38,39,53,34,39,38,53,52,55,54,51,33,96,14,9,9,64,9,9,14,192,14,9,9,64,9,9,14, +64,14,9,9,9,9,14,1,36,35,56,64,56,35,36,1,14,9,9,9,9,14,1,64,1,192,9,9,14,96,96,14, +9,9,9,9,14,96,96,14,9,9,160,9,9,14,14,9,9,32,59,43,42,13,99,99,13,42,43,59,32,9,9,14, +14,9,9,0,0,6,0,0,255,224,2,0,1,160,0,31,0,42,0,53,0,64,0,75,0,88,0,0,1,33,34,7, +6,21,17,6,7,38,39,17,35,34,7,6,21,17,22,23,22,23,33,54,55,54,55,17,52,39,38,35,3,35,38,39, +54,55,51,22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,23,35,38,39,54,55,51,22,23,6,7,53,35,38, +39,54,55,51,22,23,6,7,55,6,7,33,38,39,53,54,55,33,22,23,21,1,224,254,160,14,9,9,1,15,15,1, +32,14,9,9,1,18,18,27,1,128,27,18,18,1,9,9,14,208,96,15,1,1,15,96,15,1,1,15,96,15,1,1, +15,96,15,1,1,15,160,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,16,1,15,255,0, +15,1,1,15,1,0,15,1,1,160,9,9,14,254,176,15,1,1,15,1,48,9,9,14,254,224,27,18,18,1,1,18, +18,27,1,96,14,9,9,254,128,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,96,1,15,15,1,1, +15,15,1,96,1,15,15,1,1,15,15,1,112,15,1,1,15,96,15,1,1,15,96,0,0,3,0,0,255,225,2,128, +1,160,0,17,0,47,0,81,0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,34,7,49, +6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,51,50,55,54,39,38,39,38,39,38,35,37,38,39,49,38,35, +34,7,6,7,6,21,20,23,22,51,50,55,54,55,54,51,50,23,22,23,22,51,50,55,54,53,52,39,1,63,27,18, +18,1,1,18,18,27,27,18,18,1,1,17,18,28,1,53,49,49,39,10,1,1,9,9,13,13,10,64,84,84,64,10, +11,14,10,9,1,1,9,40,49,49,53,1,54,63,80,79,88,88,79,80,63,10,9,10,12,13,10,54,68,69,75,75, +68,68,55,10,12,13,10,9,10,97,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,160,19,18,35,10,13, +13,10,10,1,1,9,55,1,1,55,8,11,10,13,13,9,35,19,19,34,61,32,32,32,32,61,9,13,13,10,10,9, +53,27,27,28,27,52,9,10,10,13,13,9,0,10,0,0,255,192,1,128,1,192,0,20,0,33,0,46,0,59,0,72, +0,85,0,98,0,111,0,124,0,137,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,5,54,55,51,22,23,21,6,7,35,38,39,53,21,54,55,51,22,23,21,6,7,35,38,39,53,23,6,7,35,38, +39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22, +23,21,23,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35, +38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,1,80,254,224,20,14,13,1,1,13, +14,20,1,32,20,14,13,1,1,13,14,20,254,240,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32, +15,1,160,1,15,128,15,1,1,15,128,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15, +1,96,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1,1,15,32,15,1, +1,15,224,15,1,1,15,224,15,1,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1, +208,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,128,15,1,1,15,32,15,1,1,15, +32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,192,15,1,1,15,32,15,1,1, +15,32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,32,15,1,1,15,32,96,15,1,1,15,64,15,1, +1,15,64,0,0,3,0,0,255,192,2,128,1,192,0,37,0,49,0,59,0,0,19,54,55,53,52,55,54,51,50,23, +22,29,1,22,23,22,23,21,22,31,1,22,7,48,49,34,31,1,22,7,6,39,1,38,55,54,31,1,7,53,23,33, +38,39,38,63,1,54,55,49,19,34,39,38,53,51,20,7,6,35,186,36,66,9,9,14,14,9,9,56,35,36,1,1, +48,7,13,8,1,1,90,16,12,15,19,253,176,16,12,15,19,147,26,246,254,234,21,8,8,13,8,47,1,160,26,19, +19,128,19,19,26,1,71,55,15,19,14,9,9,9,9,14,19,12,43,43,59,19,73,54,9,15,19,1,71,15,19,16, +12,1,208,15,19,16,12,116,106,5,194,1,18,19,15,9,54,73,254,227,19,19,26,26,19,19,0,0,0,2,0,0, +255,192,1,192,1,192,0,26,0,40,0,0,19,54,55,51,22,31,1,51,50,23,22,21,20,7,6,35,33,34,39,38, +53,52,55,54,59,1,55,1,6,7,49,6,43,1,34,39,38,39,3,33,3,135,9,20,120,20,9,7,96,14,9,9, +9,9,14,254,128,14,9,9,9,9,14,96,7,1,4,2,13,14,19,246,19,14,13,2,22,1,129,21,1,174,17,1, +1,17,14,9,9,14,14,9,9,9,9,14,14,9,9,14,254,64,20,13,13,13,13,20,1,82,254,174,0,2,0,0, +255,192,2,0,1,192,0,26,0,73,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54, +55,38,39,38,39,38,39,3,22,51,48,49,48,49,50,55,54,23,22,7,6,7,48,49,48,49,38,39,38,53,52,55, +54,55,48,49,48,49,22,23,22,7,6,39,38,35,48,49,34,7,6,21,20,23,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,57,24,32,33,23,17,17,14,14,37,53,52,38,37,37,38, +52,53,37,14,14,17,17,23,33,32,24,23,23,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,254,199,23,23,14,13,17,17,37,1,1,37,39,51,51,39,37,1,1,37,17,16,14,14,23, +23,25,32,32,25,0,0,0,0,2,0,0,255,192,2,0,1,192,0,31,0,57,0,0,1,22,21,49,20,15,1,23, +22,21,20,7,6,35,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,49,1,55,23,7,6,29,1,51, +50,63,1,23,7,6,43,1,7,6,39,38,63,1,53,52,55,49,1,227,29,29,102,10,9,9,10,13,13,10,160,9, +9,10,13,13,10,9,102,30,40,40,31,254,84,121,45,120,5,36,7,4,121,45,120,24,33,42,40,22,19,16,12,27, +23,1,163,31,40,40,30,102,9,10,13,13,10,9,9,160,10,13,13,10,9,9,10,102,29,29,254,218,120,45,121,4, +7,36,5,120,45,121,23,27,12,16,19,22,40,42,33,24,0,2,0,32,255,192,2,64,1,192,0,15,0,45,0,0, +55,54,63,1,54,23,22,23,22,23,22,15,1,6,7,39,23,6,7,49,6,7,35,34,39,38,53,52,55,54,59,1, +54,55,54,39,38,53,54,55,54,55,23,20,21,49,224,1,37,237,15,16,17,14,13,2,2,10,161,25,43,115,96,1, +32,31,48,144,14,9,9,9,9,14,5,13,8,8,1,1,1,30,31,46,116,185,47,29,177,11,1,1,12,12,17,17, +15,250,36,7,104,137,48,31,32,1,9,9,14,14,9,9,1,11,11,13,6,6,46,32,31,3,105,3,4,0,0,0, +0,5,0,0,255,192,1,192,1,192,0,23,0,47,0,115,0,156,0,180,0,0,1,50,55,49,54,53,38,39,38,39, +38,39,48,49,6,7,6,7,6,7,20,23,22,51,35,50,55,49,54,53,38,39,38,39,38,39,48,49,6,7,6,7, +6,7,20,23,22,51,23,55,38,39,35,6,7,21,35,53,38,39,35,6,7,21,35,53,38,39,35,6,7,21,6,7, +6,7,21,22,23,54,55,54,55,54,23,22,23,22,23,54,55,54,55,54,23,22,23,22,23,54,55,54,55,54,23,22, +23,22,23,54,55,53,38,39,38,39,7,6,7,49,6,7,38,39,38,39,6,7,6,7,38,39,38,39,6,7,6,7, +38,39,21,20,23,22,51,33,50,55,54,61,1,6,35,38,39,38,39,1,50,55,49,54,53,38,39,38,39,38,39,48, +49,6,7,6,7,6,7,20,23,22,51,1,96,17,11,12,1,9,10,10,9,1,1,9,10,10,9,1,12,11,17,128, +17,11,12,1,9,10,10,9,1,1,9,10,10,9,1,12,11,17,159,1,1,15,32,15,1,64,1,15,32,15,1,64, +1,15,32,15,1,27,18,18,1,15,17,16,15,15,7,11,11,6,15,16,16,16,15,15,7,11,11,6,15,16,16,16, +15,15,7,11,11,6,15,16,16,17,15,1,18,18,28,31,11,16,17,20,20,17,16,11,11,16,17,20,20,17,16,11, +11,16,17,20,17,15,9,9,14,1,128,14,9,9,15,17,20,17,16,11,255,0,17,11,12,1,9,10,10,9,1,1, +9,10,10,9,1,12,11,17,1,81,12,11,17,12,16,17,12,13,1,1,13,13,17,16,12,17,11,11,12,11,17,12, +16,17,12,13,1,1,13,13,17,16,12,17,11,11,112,63,15,1,1,15,64,64,15,1,1,15,64,64,15,1,1,15, +64,1,18,18,26,69,10,1,1,10,10,6,10,10,7,10,9,1,1,10,10,6,10,10,7,10,9,1,1,10,10,6, +10,10,7,10,9,1,1,10,69,27,18,18,1,150,9,9,8,1,1,8,9,9,9,9,8,1,1,8,9,9,9,9, +8,1,1,6,87,14,9,9,9,9,14,87,7,1,9,8,9,1,6,12,11,17,12,16,17,12,13,1,1,13,13,17, +16,12,17,11,11,0,0,0,0,2,0,0,255,224,2,0,1,160,0,26,0,59,0,0,55,22,23,33,50,23,22,21, +20,7,6,35,33,38,39,38,39,17,52,55,54,51,50,23,22,21,17,55,53,52,63,1,54,51,50,31,1,22,51,22, +63,1,54,51,22,31,1,22,29,1,20,7,6,35,33,34,39,38,39,51,64,1,15,1,144,14,9,9,9,9,14,254, +112,34,23,22,1,9,9,14,14,9,9,64,8,79,11,14,14,9,40,7,11,10,8,21,10,13,14,10,65,8,9,9, +14,254,223,13,9,9,1,1,48,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9,9,9,9,14,254,176,80, +84,12,10,90,11,12,47,8,1,8,21,9,1,10,77,9,12,68,14,9,9,9,9,14,0,3,0,32,255,192,2,62, +1,192,0,12,0,32,0,41,0,0,1,54,55,22,23,22,23,22,23,6,7,35,53,5,54,55,49,54,55,50,23,21, +23,22,7,6,7,38,39,38,39,38,39,5,22,21,6,7,6,47,1,51,1,48,1,15,63,50,51,29,30,1,2,15, +223,254,240,2,58,57,89,17,1,157,10,12,60,79,67,54,54,32,32,1,2,14,16,14,60,11,10,159,238,1,175,15, +2,1,30,29,51,50,63,15,1,223,255,93,65,66,14,16,238,157,12,11,43,1,1,32,32,54,54,67,16,2,15,86, +56,8,8,159,0,2,0,0,255,224,2,0,1,160,0,26,0,58,0,0,55,22,23,33,50,23,22,21,20,7,6,35, +33,38,39,38,39,17,52,55,54,51,50,23,22,21,17,37,6,35,49,34,47,1,7,6,35,34,39,38,53,52,63,1, +54,51,50,31,1,55,54,51,50,23,22,21,20,15,1,64,1,15,1,144,14,9,9,9,9,14,254,112,34,23,22,1, +9,9,14,14,9,9,1,23,10,13,13,10,57,89,10,13,13,10,9,9,112,10,13,13,10,57,105,10,13,13,10,9, +9,128,48,15,1,9,9,14,14,9,9,1,22,23,34,1,80,14,9,9,9,9,14,254,176,121,9,9,58,90,9,9, +10,13,13,10,112,9,9,58,106,9,9,10,13,13,10,128,0,3,0,0,0,0,2,64,1,128,0,17,0,36,0,55, +0,0,55,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,23,35,38,39,38,39,54,55,54,55,51,22, +23,22,23,6,7,6,7,17,35,6,7,6,7,22,23,22,23,51,54,55,54,55,38,39,38,39,192,41,27,27,1,1, +27,27,41,41,27,27,1,1,27,27,41,192,192,82,54,54,2,2,54,54,82,192,82,54,54,2,2,54,54,82,192,54, +37,36,1,1,36,37,54,192,54,37,36,1,1,36,37,54,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27, +1,96,2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,1,64,1,36,37,54,54,37,36,1,1,36,37,54, +54,37,36,1,0,2,0,0,0,0,2,64,1,128,0,19,0,37,0,0,1,22,23,49,22,23,6,7,6,7,35,38, +39,38,39,54,55,54,55,51,17,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,128,82,54,54,2, +2,54,54,82,192,82,54,54,2,2,54,54,82,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,128, +2,54,54,82,82,54,54,2,2,54,54,82,82,54,54,2,254,224,1,27,27,41,41,27,27,1,1,27,27,41,41,27, +27,1,0,0,0,5,0,0,255,224,2,128,1,160,0,61,0,86,0,108,0,113,0,117,0,0,1,22,31,1,54,51, +22,23,22,23,6,7,6,7,38,39,38,39,54,55,39,7,6,43,1,6,7,6,7,38,39,38,39,54,55,54,55,50, +23,55,39,35,38,39,54,55,51,22,31,1,51,39,35,34,39,38,53,52,55,54,59,1,19,22,23,49,22,23,54,55, +54,55,38,39,38,39,34,7,23,22,7,6,47,1,6,7,49,37,55,34,35,6,7,6,7,22,23,22,23,50,55,54, +55,35,38,39,38,55,49,55,49,39,7,51,39,23,55,35,1,91,18,10,98,19,20,54,37,36,1,1,36,37,54,54, +37,36,1,2,45,22,84,8,13,49,7,35,35,50,54,37,36,1,1,36,37,54,16,15,27,22,44,22,2,2,22,56, +11,9,27,149,34,27,10,7,7,7,7,10,36,93,1,20,20,31,31,20,20,1,1,20,20,31,6,5,32,9,19,20, +12,32,18,1,254,181,24,2,4,30,20,21,1,1,21,20,30,27,19,19,6,65,16,7,8,7,181,72,51,123,33,60, +49,109,1,160,1,16,180,5,1,36,37,54,54,37,36,1,1,36,37,54,63,36,40,143,12,48,32,31,1,1,36,37, +54,54,37,36,1,4,53,31,2,22,22,2,1,8,39,64,7,7,10,10,7,7,254,192,31,20,20,1,1,20,20,31, +31,20,20,1,1,60,20,12,9,19,59,19,29,23,49,1,20,20,31,31,20,20,1,16,15,25,1,12,12,14,9,101, +101,128,83,83,0,6,0,32,255,192,2,32,1,192,0,62,0,76,0,89,0,107,0,125,0,136,0,0,1,22,23,49, +22,23,21,50,23,22,29,1,20,7,6,35,21,20,7,6,35,21,20,7,6,43,1,34,39,38,61,1,35,21,20,7, +6,43,1,34,39,38,61,1,34,39,38,61,1,34,39,38,61,1,52,55,54,51,53,54,55,54,55,3,20,23,49,22, +59,1,53,35,34,7,6,29,1,23,51,50,55,54,61,1,52,39,38,43,1,21,7,50,55,49,54,53,52,39,38,35, +34,7,6,21,20,23,22,51,33,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,3,35,6,7,22,23, +51,54,55,38,39,1,32,102,60,61,1,14,9,9,9,9,14,9,9,14,9,9,14,32,14,9,9,192,9,9,14,32, +14,9,9,14,9,9,14,9,9,9,9,14,1,61,60,102,160,9,9,14,112,112,14,9,9,176,112,14,9,9,9,9, +14,112,160,14,9,9,9,9,14,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14,9,9,9,9,14,64,160,15, +1,1,15,160,15,1,1,15,1,192,1,22,23,34,48,9,9,14,64,14,9,9,160,14,9,9,32,14,9,9,9,9, +14,32,32,14,9,9,9,9,14,32,9,9,14,160,9,9,14,64,14,9,9,48,34,23,22,1,255,0,14,9,9,160, +9,9,14,96,32,9,9,14,96,14,9,9,160,112,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9, +9,9,14,14,9,9,1,80,1,15,15,1,1,15,15,1,0,3,0,0,255,224,2,64,1,160,0,20,0,54,0,88, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,22,51,49,50,55,54,23,22, +7,6,35,34,39,38,53,38,55,54,51,50,23,22,7,6,39,38,35,34,7,6,21,20,23,51,22,51,49,50,55,54, +23,22,7,6,35,34,39,38,53,38,55,54,51,50,23,22,7,6,39,38,35,34,7,6,21,20,23,2,0,254,64,27, +18,18,1,1,18,18,27,1,192,27,18,18,1,1,18,18,27,254,169,14,20,19,14,17,17,14,14,29,38,39,29,28, +1,29,29,38,39,29,14,14,17,17,14,20,19,14,14,14,192,14,20,19,14,17,17,14,14,29,38,39,29,28,1,29, +29,38,39,29,14,14,17,17,14,20,19,14,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,254,254,14,14,14,14,17,17,28,28,28,40,40,28,28,28,17,17,14,14,14,14,14,20,20,14,14,14, +14,14,17,17,28,28,28,40,40,28,28,28,17,17,14,14,14,14,14,20,20,14,0,0,0,2,0,0,255,224,1,192, +1,160,0,35,0,71,0,0,19,22,23,49,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,35,17,20,7, +6,35,34,39,38,53,17,52,55,54,59,1,3,34,39,49,38,53,17,52,55,54,51,50,23,22,29,1,51,54,55,54, +55,17,52,55,54,51,50,23,22,21,17,6,7,6,7,35,192,54,37,36,1,9,9,14,14,9,9,1,18,18,27,128, +9,9,14,14,9,9,9,9,14,160,32,14,9,9,9,9,14,14,9,9,128,27,18,18,1,9,9,14,14,9,9,1, +36,37,54,160,1,160,1,36,37,54,160,14,9,9,9,9,14,160,27,18,18,1,254,160,14,9,9,9,9,14,1,128, +14,9,9,254,64,9,9,14,1,0,14,9,9,9,9,14,224,1,18,18,27,1,32,14,9,9,9,9,14,254,224,54, +37,36,1,0,0,4,0,0,255,192,2,61,1,192,0,28,0,53,0,71,0,89,0,0,19,22,31,1,33,22,23,22, +15,1,6,7,33,23,33,22,23,6,7,33,38,39,3,35,38,39,54,55,51,23,51,21,22,23,54,55,53,51,54,55, +38,39,35,53,38,39,6,7,21,35,6,7,22,23,3,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39, +33,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,96,19,5,1,1,165,16,9,9,3,54,8,23,254, +195,9,1,52,22,2,2,22,254,183,18,5,60,52,22,2,2,22,72,176,44,1,19,18,2,44,18,2,2,18,44,2, +18,19,1,44,19,1,1,19,144,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,128,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,1,192,1,19,12,1,12,12,16,192,22,1,48,2,22,22,2,1,18,1,61, +2,22,22,2,180,44,18,2,2,18,44,2,18,19,1,44,18,2,2,18,44,1,19,18,2,254,228,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,3,0,0, +255,192,2,61,1,192,0,46,0,64,0,82,0,0,19,54,55,51,22,31,1,51,21,39,38,7,6,31,1,22,63,1, +54,39,38,15,1,53,51,22,23,22,15,1,6,7,33,23,33,22,23,6,7,33,38,39,3,35,38,39,49,19,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38, +39,0,2,22,72,19,5,1,191,24,16,17,14,14,64,17,16,64,15,15,16,17,23,182,16,9,9,3,54,8,23,254, +195,9,1,52,22,2,2,22,254,183,18,5,60,52,22,2,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,168,22,2,1,19,12,102,23,14,14,17,16,64, +15,15,64,16,17,14,14,23,102,1,12,12,16,192,22,1,48,2,22,22,2,1,18,1,61,2,22,254,72,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,0, +0,1,0,0,255,192,2,0,1,192,0,21,0,0,37,22,21,49,20,15,1,6,35,34,47,1,38,53,52,63,1,54, +51,50,31,1,1,244,12,12,216,12,16,16,12,216,12,12,216,12,16,16,12,216,220,12,16,16,12,216,12,12,216,12, +16,16,12,216,12,12,216,0,0,3,0,0,255,192,2,63,1,192,0,48,0,56,0,110,0,0,19,52,55,49,54,59, +1,50,23,22,29,1,51,22,23,22,23,21,23,22,23,22,15,1,6,7,38,39,38,35,34,7,6,7,38,47,1,38, +55,54,63,1,53,54,55,54,55,51,53,7,55,54,31,1,53,33,21,23,54,55,51,54,23,22,23,22,23,22,7,6, +7,6,39,38,39,6,7,38,39,38,39,6,7,6,7,38,39,6,7,6,39,38,39,38,55,54,55,54,55,54,23,49, +22,23,54,55,54,23,22,23,49,192,9,9,14,128,14,9,9,48,20,14,13,1,44,18,4,3,13,101,26,25,30,29, +17,20,20,17,26,33,25,26,101,13,3,4,18,44,1,13,14,20,48,32,108,20,20,108,255,0,224,42,35,1,20,19, +22,28,13,7,7,3,3,11,12,12,38,20,45,50,49,31,9,7,7,9,31,49,51,43,21,38,13,11,11,3,3,7, +7,13,28,22,19,21,35,42,43,35,18,19,34,43,1,160,14,9,9,9,9,14,32,1,13,14,20,128,15,7,16,17, +14,92,15,1,1,20,12,12,19,2,1,15,92,14,17,16,7,16,128,20,14,13,1,31,187,36,7,7,36,91,91,229, +2,24,13,15,18,7,3,11,11,13,13,7,7,3,10,15,25,1,3,16,4,4,4,4,16,3,1,25,15,10,3,7, +7,13,13,11,11,3,7,18,15,13,24,2,1,25,12,12,25,1,0,0,0,4,0,0,255,192,1,192,1,192,0,67, +0,72,0,77,0,103,0,0,37,55,54,39,38,43,1,54,53,52,39,52,53,54,55,52,39,38,39,38,39,38,39,6, +7,6,39,38,39,6,7,6,7,6,7,6,21,22,23,20,21,6,21,20,23,35,34,7,6,31,1,6,7,6,21,20, +23,22,51,33,50,55,54,53,52,39,38,39,7,39,31,1,7,51,39,63,1,7,19,20,7,49,6,43,1,38,39,38, +35,34,7,6,7,35,34,39,38,61,1,22,51,50,55,21,1,122,37,3,5,5,9,57,10,1,62,3,22,21,37,9, +15,14,21,15,12,26,26,12,15,21,14,15,8,37,22,22,3,62,1,10,58,9,4,5,3,37,32,19,19,10,10,15, +1,122,15,10,10,19,19,32,202,48,64,16,32,95,31,16,64,49,49,11,11,16,13,26,9,3,7,7,3,9,26,13, +16,11,11,42,54,54,42,109,93,8,7,7,22,26,4,4,2,2,14,22,12,10,10,7,34,27,27,1,1,10,17,17, +10,1,1,27,27,34,7,10,10,12,22,14,2,2,4,4,26,22,7,7,8,93,24,36,35,43,15,10,10,10,10,15, +43,35,36,24,140,191,32,32,127,127,32,32,191,1,37,16,11,11,2,23,7,7,23,2,11,11,16,16,6,6,16,0, +0,4,0,0,255,224,2,128,1,160,0,70,0,95,0,131,0,149,0,0,1,22,31,1,55,54,59,1,50,23,22,29, +1,20,7,6,43,1,23,54,51,22,23,22,23,6,7,6,7,38,39,38,39,54,55,39,6,7,6,21,20,23,35,54, +39,38,39,38,39,35,53,54,55,54,59,1,50,31,1,55,39,35,34,39,38,53,52,55,54,59,1,19,22,23,49,22, +23,54,55,54,55,38,39,38,39,34,35,23,22,7,6,47,1,6,21,49,7,6,7,49,6,7,38,39,38,39,54,55, +54,55,22,23,22,23,35,38,39,38,35,6,7,6,7,22,23,22,23,50,55,54,55,51,39,52,55,49,54,51,50,23, +22,21,20,7,6,35,34,39,38,53,1,87,23,12,14,47,9,12,20,14,9,9,9,9,14,62,55,19,20,54,37,36, +1,1,36,37,54,54,37,36,1,2,45,15,30,17,17,3,70,3,1,2,44,45,69,96,1,9,9,13,103,26,19,44, +99,16,59,10,7,7,7,7,10,64,105,1,18,18,27,27,18,18,1,1,18,18,27,4,3,28,9,19,20,12,28,15, +194,10,34,34,48,54,37,36,1,1,36,37,54,48,34,34,10,67,7,16,16,20,27,18,18,1,1,18,18,27,20,16, +16,7,67,158,9,9,14,14,9,9,9,9,14,14,9,9,1,160,1,20,26,40,7,9,9,14,32,14,9,9,101,5, +1,36,37,54,54,37,36,1,1,36,37,54,63,36,29,22,33,33,40,16,16,16,16,68,45,45,2,32,14,9,9,19, +45,82,30,7,7,10,10,7,7,254,192,27,18,18,1,1,18,18,27,27,18,18,1,53,20,12,9,19,52,17,24,24, +45,29,29,1,1,36,37,54,54,37,36,1,1,29,29,45,18,11,11,1,18,18,27,27,18,18,1,11,11,18,24,14, +9,9,9,9,14,14,9,9,9,9,14,0,0,3,0,0,255,192,2,0,1,192,0,17,0,47,0,105,0,0,1,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,22,23,49,22,23,21,20,7,6,43,1,7,6,7,35, +38,47,1,35,34,39,38,61,1,54,55,54,55,51,7,6,7,6,23,22,23,22,23,54,55,54,55,54,39,38,39,38, +39,38,55,54,23,22,23,22,23,22,23,6,7,6,7,6,7,6,7,38,39,38,39,38,39,38,39,54,55,54,55,54, +55,54,23,22,7,6,7,49,1,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,32,27,18,18,1,9, +9,14,2,11,5,27,38,27,5,11,2,14,9,9,1,18,18,27,64,225,4,4,5,5,14,29,62,96,96,62,29,14, +5,5,4,4,24,45,22,2,6,22,50,32,16,12,13,1,1,8,9,11,23,34,69,101,101,69,34,23,11,9,8,1, +1,13,12,16,32,50,22,6,1,21,45,24,1,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,1, +18,18,27,48,14,9,9,100,26,2,2,26,100,9,9,14,48,27,18,18,1,255,2,2,5,5,9,8,17,1,1,17, +8,9,5,5,2,2,13,8,6,22,21,2,9,16,8,11,13,20,16,11,11,7,14,9,19,1,1,19,9,14,7,11, +11,16,20,13,11,8,16,9,2,21,22,6,8,13,0,0,0,2,0,32,255,224,2,31,1,160,0,16,0,50,0,0, +37,7,6,35,34,47,1,7,35,23,22,51,50,63,1,35,39,55,38,7,49,6,15,1,39,38,39,38,7,6,7,6, +23,51,55,54,51,50,31,1,55,54,51,50,31,1,51,54,39,38,39,1,96,49,6,9,9,5,57,30,98,176,10,13, +13,10,176,112,23,143,43,52,53,39,20,20,39,53,52,43,43,5,5,32,105,36,5,10,9,6,58,49,5,9,9,6, +27,122,32,5,5,43,204,99,9,9,127,72,182,10,10,182,44,181,35,4,5,39,20,20,39,5,4,35,39,54,54,46, +86,10,9,130,98,9,9,55,46,54,54,39,0,2,0,16,255,193,1,112,1,192,0,40,0,58,0,0,1,38,39,49, +38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35, +53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,112,2,50,49,75,75,49,50, +2,1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,176,41,27,27,1,1, +27,27,41,41,27,27,1,1,27,27,41,1,16,75,49,50,2,2,50,49,75,66,47,47,12,35,2,14,32,15,1,48, +15,1,1,15,48,1,15,32,14,2,35,12,47,47,66,96,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1, +0,2,255,255,255,224,1,192,1,161,0,32,0,49,0,0,1,35,6,7,6,31,1,7,38,35,34,7,6,23,22,23, +22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,3,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +20,7,1,175,112,17,6,5,11,29,57,46,54,75,56,45,1,2,47,56,72,70,54,46,5,5,35,56,30,8,9,21, +3,1,16,187,30,38,39,30,28,28,30,39,38,30,28,28,1,161,1,14,14,12,30,56,31,59,53,68,67,52,54,52, +47,62,61,54,56,29,8,1,1,23,113,14,2,254,171,28,28,30,38,38,30,28,28,30,38,38,30,0,0,2,0,16, +255,192,1,112,1,193,0,62,0,80,0,0,37,52,39,49,38,39,54,55,54,39,38,39,35,34,7,6,7,38,39,38, +39,35,34,7,6,23,22,23,6,7,6,21,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51, +54,55,53,38,39,35,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,112,18, +17,30,31,17,3,5,4,9,54,8,5,28,49,50,27,5,8,54,9,4,5,3,17,31,30,17,18,1,40,40,63,32, +15,1,1,15,32,1,15,32,15,1,32,15,1,1,15,32,63,40,40,1,176,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,225,42,35,35,25,26,38,8,7,7,1,7,40,1,2,39,5,1,7,7,9,37,27,25,35,35,41, +66,47,47,12,21,1,15,32,15,1,16,15,1,1,15,16,1,15,32,15,1,19,13,47,47,67,97,1,27,27,41,41, +26,27,1,1,27,27,40,41,27,27,1,0,0,2,0,96,255,193,1,240,1,192,0,55,0,73,0,0,1,35,6,7, +6,31,1,7,38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55, +53,38,39,35,53,54,55,54,55,38,39,55,23,22,55,54,55,53,38,39,3,38,39,49,38,39,54,55,54,55,22,23, +22,23,6,7,6,7,1,224,112,17,6,5,11,29,27,41,56,68,45,45,2,1,36,35,56,32,15,1,1,15,32,1, +15,32,15,1,32,15,1,1,15,32,56,35,36,1,1,20,30,30,12,14,14,1,1,15,224,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,1,192,1,14,13,13,30,27,33,1,2,45,45,68,59,43,42,13,19,1,15,31,15, +1,32,15,1,1,15,32,1,15,31,15,1,19,12,43,43,59,43,35,30,29,11,5,6,17,112,15,1,254,208,1,22, +23,34,34,23,22,1,1,22,23,34,34,23,22,1,0,0,0,2,0,0,255,192,2,0,1,192,0,87,0,105,0,0, +1,35,6,7,6,31,1,7,38,39,6,7,39,55,54,47,1,38,15,1,39,55,54,39,38,39,35,6,7,21,22,23, +22,63,1,23,7,6,31,1,22,63,1,23,6,7,22,23,22,23,21,35,6,7,21,22,31,1,21,22,23,51,54,55, +53,51,54,55,53,38,47,1,53,54,55,54,55,38,39,55,23,22,55,54,55,53,38,39,3,38,39,49,38,39,54,55, +54,55,22,23,22,23,6,7,6,7,1,243,95,14,4,5,9,21,67,38,50,50,38,16,6,9,9,12,11,11,6,17, +21,9,5,4,14,95,12,1,1,11,12,10,22,16,6,9,9,12,11,11,6,17,26,1,1,36,35,56,16,15,1,1, +15,16,1,15,32,15,1,16,15,1,1,15,16,56,35,36,1,1,26,67,22,10,12,11,1,2,11,243,34,23,22,1, +1,22,23,34,34,23,22,1,1,22,23,34,1,192,1,11,12,10,22,67,26,1,1,26,17,6,11,11,12,9,9,6, +16,22,10,12,11,1,1,12,95,14,4,5,9,21,17,6,11,11,12,9,9,6,16,38,50,59,43,42,13,19,1,15, +15,15,1,1,16,15,1,1,15,16,1,15,15,15,1,1,19,13,42,43,59,50,38,67,21,9,5,4,14,95,12,1, +254,176,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,0,0,0,3,0,16,255,192,2,112,1,192,0,40, +0,58,0,111,0,0,1,38,39,49,38,39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51, +54,55,53,51,54,55,53,38,39,35,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6, +7,37,38,39,49,38,39,6,7,22,23,54,55,22,23,22,23,6,7,6,7,38,39,6,7,22,23,21,35,6,7,21, +22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,54,55,54,55,1,112,2,50,49,75,75,49,50,2, +1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,176,41,27,27,1,1,27, +27,41,41,27,27,1,1,27,27,41,1,176,2,50,49,75,59,45,28,15,25,36,41,27,27,1,1,27,27,41,36,26, +14,28,32,40,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48,63,40,40,1,1,16,75,49,50,2,2, +50,49,75,66,47,47,12,35,2,14,32,15,1,48,15,1,1,15,48,1,15,32,14,2,35,12,47,47,66,96,1,27, +27,41,41,27,27,1,1,27,27,41,41,27,27,1,96,75,49,50,2,1,33,30,39,22,1,1,27,27,41,41,27,27, +1,1,22,38,30,24,7,36,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,35,13,47,47,66,0,0,0, +0,3,0,0,255,224,2,128,1,160,0,32,0,50,0,99,0,0,37,55,23,22,55,54,55,53,38,39,35,6,7,6, +31,1,7,38,7,6,7,6,23,22,23,22,51,50,55,54,55,54,39,7,6,35,49,34,39,38,53,52,55,54,51,50, +23,22,21,20,7,1,35,6,7,6,31,1,7,21,6,7,6,35,34,35,21,22,23,22,21,20,7,6,35,34,35,38, +35,6,7,6,7,22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,1,65,56,30,12,14,14,1,1,15, +113,16,6,5,10,30,57,55,64,64,48,45,1,1,48,54,71,71,55,46,5,5,35,77,30,39,38,29,29,29,29,39, +38,30,28,28,1,123,113,16,6,5,10,30,43,1,15,16,24,4,4,10,10,28,28,30,38,3,2,1,1,15,23,9, +10,31,33,70,54,46,5,5,35,56,30,8,9,21,3,1,16,244,56,29,11,5,6,17,113,14,1,1,14,13,13,30, +56,37,7,7,50,54,67,68,52,53,52,47,62,61,54,168,28,28,30,38,38,30,28,28,30,38,38,30,1,84,1,14, +13,13,30,44,13,24,16,16,5,6,9,30,38,38,30,28,1,29,23,9,8,12,52,47,62,61,54,56,29,8,1,1, +23,112,15,1,0,3,0,0,255,193,2,128,1,192,0,39,0,57,0,104,0,0,37,35,53,54,55,54,55,38,39,38, +39,6,7,6,7,22,23,22,23,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,47,1,38, +39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,35,6,7,6,31,1,7,38,35,34,7,22,23,54,51, +50,23,22,21,20,7,6,35,34,39,6,7,22,23,22,51,50,55,54,55,54,39,55,23,22,55,54,55,53,38,39,1, +0,48,63,40,40,1,2,50,49,75,75,49,50,2,1,40,40,63,48,15,1,1,15,48,1,15,32,15,1,48,15,1, +1,15,80,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,192,112,17,6,5,11,29,24,47,53,23,22, +20,7,9,9,38,30,28,28,30,38,37,28,24,33,18,6,45,53,70,55,45,5,5,35,25,29,8,9,21,3,1,15, +64,35,13,47,47,66,75,49,50,2,2,50,49,75,66,47,47,12,35,2,14,32,15,1,48,15,1,1,15,48,1,15, +32,13,2,112,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,1,16,1,14,13,13,30,24,31,6,35,41, +2,28,30,38,38,30,28,26,29,18,10,19,30,52,47,62,61,54,24,29,8,1,1,23,112,15,1,0,0,2,0,32, +255,224,2,0,1,192,0,48,0,66,0,0,1,35,6,7,6,31,1,7,39,38,15,1,6,31,1,7,38,7,6,7, +6,21,20,23,22,51,50,55,54,55,54,39,55,23,22,63,1,54,47,1,55,23,22,55,54,55,53,38,39,3,6,35, +49,34,39,38,53,52,55,54,51,50,23,22,21,20,7,1,240,112,17,6,5,11,29,24,34,11,12,22,10,10,34,19, +54,61,62,47,52,52,54,70,70,54,46,5,5,35,19,34,11,11,23,9,9,34,24,30,12,14,14,1,1,15,220,30, +38,38,30,28,28,30,38,38,30,28,28,1,192,1,14,13,13,30,24,34,9,9,23,11,11,34,19,35,5,5,46,54, +70,70,54,52,52,47,62,61,54,19,34,10,10,22,12,11,34,24,29,11,5,6,17,112,15,1,254,140,28,28,30,38, +38,30,28,28,30,38,38,30,0,2,0,15,255,196,1,112,1,192,0,48,0,66,0,0,19,53,51,54,55,53,38,43, +1,53,51,54,55,54,47,1,38,15,1,6,23,22,23,51,21,35,6,7,21,22,59,1,21,6,7,6,23,22,23,22, +23,22,55,54,55,38,39,38,39,3,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,224,24,7,1,1, +7,24,25,12,5,4,8,61,9,9,61,8,4,5,12,25,24,7,1,1,7,24,65,40,41,2,6,49,48,71,75,51, +50,2,1,40,40,63,32,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,29,19,1,6,17,7,17,1, +10,11,9,61,8,8,61,9,11,10,1,15,1,6,15,7,19,14,50,50,69,70,47,47,2,2,49,49,76,66,47,47, +13,254,244,1,27,27,40,40,27,27,1,1,27,27,40,40,27,27,1,0,0,2,0,32,0,16,2,112,1,112,0,48, +0,66,0,0,37,39,38,7,6,7,21,7,53,38,39,35,6,7,21,35,38,39,38,39,6,7,6,7,22,23,22,23, +54,55,54,55,51,21,22,23,51,54,55,53,23,21,22,23,22,63,1,54,39,5,38,39,49,38,39,54,55,54,55,22, +23,22,23,20,7,6,7,2,107,82,13,13,14,1,33,1,14,32,15,1,19,13,47,47,65,76,49,50,2,2,50,49, +75,66,47,47,12,19,2,14,32,14,1,34,1,14,13,13,82,10,10,254,101,41,27,27,1,1,27,27,41,41,26,27, +1,27,27,41,203,78,11,6,6,16,39,1,48,15,1,1,15,48,63,40,40,1,2,50,49,75,75,49,50,2,1,40, +40,63,48,15,1,1,15,49,1,40,16,6,6,11,78,11,11,107,1,27,27,41,41,27,27,1,1,27,27,41,41,27, +27,1,0,0,0,2,0,16,255,192,1,112,1,192,0,24,0,42,0,0,1,38,39,49,38,39,6,7,6,7,22,23, +22,23,21,22,23,51,54,55,53,54,55,54,55,7,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1, +112,2,50,49,75,75,49,50,2,1,40,40,63,1,15,32,15,1,63,40,40,1,176,41,27,27,1,1,27,27,41,41, +27,27,1,1,27,27,41,1,16,75,49,50,2,2,50,49,75,66,47,47,12,148,15,1,1,15,147,13,47,47,66,96, +1,27,27,41,41,26,27,1,1,27,27,40,41,27,27,1,0,2,0,16,0,16,1,112,1,112,0,17,0,35,0,0, +19,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,17,38,39,49,38,39,54,55,54,55,22,23,22,23, +6,7,6,7,192,75,49,50,2,2,50,49,75,75,49,50,2,2,50,49,75,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,28,40,1,112,2,50,49,75,75,49,50,2,2,50,49,75,75,49,50,2,254,240,1,27,27,41,41,27,27, +1,1,27,27,41,41,27,27,1,0,0,0,0,6,0,0,255,224,2,0,1,160,0,20,0,29,0,38,0,59,0,68, +0,77,0,0,37,33,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35,7,38,39,54,55,22,23, +6,7,51,38,39,54,55,22,23,6,7,19,33,34,7,6,29,1,20,23,22,51,33,50,55,54,61,1,52,39,38,35, +7,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,1,224,254,64,14,9,9,9,9,14,1,192,14,9, +9,9,9,14,128,22,2,2,22,22,2,2,22,64,22,2,2,22,22,2,2,22,64,254,64,14,9,9,9,9,14,1, +192,14,9,9,9,9,14,128,22,2,2,22,22,2,2,22,64,22,2,2,22,22,2,2,22,160,9,9,14,128,14,9, +9,9,9,14,128,14,9,9,120,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,1,120,9,9,14,128,14, +9,9,9,9,14,128,14,9,9,120,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,0,0,0,3,0,0, +255,192,2,128,1,192,0,17,0,36,0,61,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31, +1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,37,35,53,38,39,6,7,21,35,6,7,22,23, +51,21,22,23,54,55,53,51,54,55,38,39,224,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,51,102,73, +49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,1,85,48,2,22,22,2,48,22,2,2,22,48,2,22,22,2, +48,22,2,2,22,192,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,10,10, +15,73,49,49,2,104,48,22,2,2,22,48,2,22,22,2,48,22,2,2,22,48,2,22,22,2,0,0,0,3,0,0, +255,192,2,120,1,192,0,18,0,36,0,61,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,55,54,39,38,15,1,39,38,7,6,31,1, +7,6,23,22,63,1,23,22,55,54,47,1,1,19,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51, +54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,98,47,14,14,17,17,47,47,17,17,14,14,47,47,14, +14,17,17,47,47,17,17,14,14,47,144,2,49,49,73,15,10,10,10,10,15,73,49,49,2,48,1,36,37,54,54,37, +36,1,1,36,37,54,54,37,36,1,33,47,17,17,14,14,48,47,14,14,17,17,47,47,17,17,14,14,47,47,14,14, +17,17,48,0,0,2,0,0,255,224,2,128,1,160,0,42,0,60,0,0,19,50,23,49,22,21,17,51,53,52,55,54, +59,1,22,23,22,23,21,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,53,17,52,55,54,51,23, +54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,32,14,9,9,224,9,9,14,224,41,27,27,1,9,9, +14,14,9,9,254,0,9,9,14,14,9,9,9,9,14,64,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1, +1,160,9,9,14,255,0,160,14,9,9,1,27,27,41,224,14,9,9,9,9,14,32,32,14,9,9,9,9,14,1,128, +14,9,9,176,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,3,0,0,255,192,1,192,1,192,0,39, +0,61,0,79,0,0,1,22,23,49,22,23,17,6,7,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38, +39,38,63,1,38,39,38,39,17,54,55,54,55,33,5,20,23,49,22,51,33,50,55,54,61,1,52,39,38,35,33,34, +7,6,29,1,23,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,96,41,27,27,1,1,22,23,35, +46,5,3,3,8,39,13,9,55,128,55,9,13,40,8,2,3,5,46,35,23,22,1,1,27,27,41,1,0,254,224,9, +9,14,1,0,14,9,9,9,9,14,255,0,14,9,9,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,192,1,27,27,41,255,0,36,26,27,6,46,6,6,6,1,9,55,55,9,1,6,6,6,46,6,27,26,36,1,0, +41,27,27,1,192,14,9,9,9,9,14,96,14,9,9,9,9,14,96,192,1,13,14,20,20,14,13,1,1,13,14,20, +20,14,13,1,0,5,0,0,255,192,1,192,1,192,0,39,0,61,0,83,0,101,0,119,0,0,1,22,23,49,22,23, +17,6,7,6,7,23,22,7,6,7,35,34,47,1,35,7,6,43,1,38,39,38,63,1,38,39,38,39,17,54,55,54, +55,33,5,20,23,49,22,59,1,50,55,54,61,1,52,39,38,43,1,34,7,6,29,1,55,34,7,49,6,29,1,20, +23,22,59,1,50,55,54,61,1,52,39,38,43,1,7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35, +5,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,96,41,27,27,1,1,22,23,35,46,5,3,3, +8,39,13,9,55,128,55,9,13,40,8,2,3,5,46,35,23,22,1,1,27,27,41,1,0,254,224,9,9,14,80,14, +9,9,9,9,14,80,14,9,9,208,14,9,9,9,9,14,80,14,9,9,9,9,14,80,176,14,9,9,9,9,14,14, +9,9,9,9,14,1,0,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,27,27,41,255,0,36,26,27,6,46, +6,6,6,1,9,55,55,9,1,6,6,6,46,6,27,26,36,1,0,41,27,27,1,224,14,9,9,9,9,14,96,14, +9,9,9,9,14,96,128,9,9,14,96,14,9,9,9,9,14,96,14,9,9,224,9,9,14,14,9,9,9,9,14,14, +9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49, +0,0,37,33,53,33,21,37,54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6, +7,33,38,39,38,39,53,55,6,7,21,22,23,33,54,55,53,38,39,33,1,192,254,160,1,96,254,64,1,22,23,34, +1,128,34,23,22,1,14,9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1, +15,254,128,128,128,128,144,34,23,22,1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34, +160,16,1,15,160,15,1,1,15,160,15,1,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,37,33, +53,33,21,37,54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39, +38,39,53,55,6,7,21,22,23,33,54,55,53,38,39,33,1,96,255,0,1,0,254,160,1,22,23,34,1,128,34,23, +22,1,14,9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128, +128,128,144,34,23,22,1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15, +160,15,1,1,15,160,15,1,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,37,35,53,51,21,37, +54,55,49,54,55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39,38,39,53,55, +6,7,21,22,23,33,54,55,53,38,39,33,1,32,192,192,254,224,1,22,23,34,1,128,34,23,22,1,14,9,9,9, +9,14,1,22,23,34,254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128,128,128,144,34,23,22, +1,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15,160,15,1,1,15,160, +15,1,0,0,0,3,0,0,0,32,2,64,1,96,0,4,0,36,0,49,0,0,55,35,53,51,21,39,54,55,49,54, +55,33,22,23,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6,7,33,38,39,38,39,53,55,6,7,21,22, +23,33,54,55,53,38,39,33,192,96,96,192,1,22,23,34,1,128,34,23,22,1,14,9,9,9,9,14,1,22,23,34, +254,128,34,23,22,1,80,15,1,1,15,1,128,15,1,1,15,254,128,128,128,128,144,34,23,22,1,1,22,23,34,16, +9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,16,1,15,160,15,1,1,15,160,15,1,0,2,0,0, +0,32,2,64,1,96,0,31,0,44,0,0,1,22,23,49,22,23,21,50,23,22,29,1,20,7,6,35,21,6,7,6, +7,33,38,39,38,39,53,54,55,54,55,33,5,22,23,33,54,55,53,38,39,33,6,7,21,1,208,34,23,22,1,14, +9,9,9,9,14,1,22,23,34,254,128,34,23,22,1,1,22,23,34,1,128,254,112,1,15,1,128,15,1,1,15,254, +128,15,1,1,96,1,22,23,34,16,9,9,14,64,14,9,9,16,34,23,22,1,1,22,23,34,160,34,23,22,1,240, +15,1,1,15,160,15,1,1,15,160,0,0,0,1,0,0,255,225,1,64,1,160,0,27,0,0,19,50,23,5,22,21, +6,7,35,23,22,7,6,7,6,39,38,47,1,7,6,35,38,39,17,54,55,49,23,9,7,1,18,7,2,20,118,57, +5,4,4,12,12,12,12,7,58,82,7,10,20,2,2,21,1,160,6,243,7,10,20,2,114,12,12,12,7,5,4,4, +12,116,95,7,2,21,1,114,21,2,0,0,0,1,0,0,255,193,1,0,1,192,0,81,0,0,5,20,7,49,6,35, +38,39,6,7,34,39,38,53,52,55,54,51,54,55,54,55,53,35,34,39,38,53,52,55,54,59,1,53,38,39,38,39, +34,39,38,53,52,55,54,51,22,23,54,55,50,23,22,21,20,7,6,35,6,7,6,7,21,51,50,23,22,21,20,7, +6,43,1,21,22,23,22,23,50,23,22,21,1,0,9,9,14,59,37,37,59,14,9,9,9,9,14,27,18,18,1,32, +14,9,9,9,9,14,32,1,18,18,27,14,9,9,9,9,14,59,37,37,59,14,9,9,9,9,14,27,18,18,1,32, +14,9,9,9,9,14,32,1,18,18,27,14,9,9,32,14,8,9,2,42,42,2,9,9,13,13,9,10,1,18,18,27, +96,9,9,14,14,9,9,96,27,18,18,1,9,9,14,14,9,9,2,42,42,2,9,9,14,14,9,9,1,18,18,27, +96,9,9,14,14,9,9,96,27,18,18,1,9,9,14,0,0,4,0,0,255,192,2,64,1,192,0,21,0,45,0,82, +0,95,0,0,19,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,54,55,49,54,55, +53,51,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,51,37,38,39,54,55,54,55,22,23,33,54,55,22,23, +22,23,6,7,17,22,23,6,7,6,7,38,39,33,6,7,38,39,38,39,54,55,17,55,6,7,17,22,23,33,54,55, +17,38,39,33,128,9,9,14,128,14,9,9,9,9,14,128,14,9,9,160,27,18,18,1,64,14,9,9,9,9,14,128, +14,9,9,32,255,0,30,2,1,18,18,27,37,18,1,82,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18, +254,174,18,37,27,18,18,1,2,30,87,8,15,15,8,1,82,8,15,15,8,254,174,1,32,14,9,9,9,9,14,96, +14,9,9,9,9,14,96,160,1,18,18,27,32,9,9,14,96,14,9,9,9,9,14,32,201,18,37,27,18,18,1,2, +30,30,2,1,18,18,27,37,18,254,238,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,1,18,23,15,8, +254,238,8,15,15,8,1,18,8,15,0,0,0,3,0,0,255,192,2,128,1,192,0,36,0,50,0,93,0,0,19,38, +39,54,55,54,55,22,23,51,54,55,22,23,22,23,6,7,21,22,23,6,7,6,7,38,39,35,6,7,38,39,38,39, +54,55,53,51,21,22,23,51,54,55,53,38,39,35,6,7,49,19,6,7,38,39,38,39,54,55,53,51,21,22,23,51, +54,55,53,38,39,35,38,39,53,51,54,55,22,23,22,23,6,7,21,22,23,6,7,6,7,38,39,35,32,30,2,1, +18,18,27,37,18,210,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,64, +15,8,210,8,15,15,8,210,8,15,215,18,37,27,18,18,1,2,30,64,15,8,210,8,15,15,8,46,9,18,73,18, +37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,1,73,18,37,27,18,18,1,2,30,30,2,1,18,18,27, +37,18,114,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,114,114,8,15,15,8,114,8,15,15,8,254,151, +30,2,1,18,18,27,37,18,41,41,8,15,15,8,114,8,16,22,17,25,30,2,1,18,19,26,38,18,114,18,37,27, +18,18,1,2,30,0,0,0,0,2,0,0,255,224,1,192,1,160,0,21,0,32,0,0,1,33,6,7,6,7,17,22, +23,22,23,51,50,63,1,54,61,1,38,39,38,39,5,33,21,35,34,7,6,29,1,35,17,1,144,254,160,20,14,13, +1,1,13,14,20,246,26,19,90,19,1,13,14,20,254,176,1,64,64,14,9,9,224,1,160,1,13,14,20,254,160,20, +14,13,1,19,90,19,26,246,20,14,13,1,64,224,9,9,14,64,1,64,0,2,0,0,255,192,2,0,1,192,0,23, +0,45,0,0,55,54,55,49,54,55,51,21,22,23,22,23,51,21,6,7,6,7,35,38,39,38,39,53,23,38,39,49, +38,39,53,54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,0,1,18,18,27,64,1,27,27,41,128,1,18,18, +27,224,27,18,18,1,224,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18,27,224,224,27,18,18,1,128,41, +27,27,1,64,27,18,18,1,1,18,18,27,224,128,1,18,18,27,224,27,18,18,1,1,18,18,27,224,27,18,18,1, +0,5,0,0,255,192,2,128,1,192,0,29,0,33,0,65,0,69,0,115,0,0,1,38,35,49,34,7,6,7,6,7, +6,7,6,23,22,23,22,23,54,55,54,55,52,49,52,39,38,39,38,39,7,55,23,35,7,48,53,49,54,39,49,38, +39,49,38,39,38,35,34,7,6,7,6,7,6,7,6,23,22,23,22,23,54,55,54,55,39,23,35,55,1,35,17,54, +55,51,50,55,54,53,52,39,38,43,1,38,39,6,7,35,34,7,6,21,20,23,22,59,1,22,23,17,35,6,7,6, +7,22,23,33,54,55,52,39,38,39,2,43,15,28,28,15,19,13,27,11,11,2,2,1,1,36,37,54,54,36,36,1, +4,4,18,18,41,116,72,72,144,183,1,4,4,18,18,42,15,28,28,15,19,13,27,11,11,2,2,1,1,36,36,54, +54,36,37,1,128,72,144,72,1,111,143,37,9,114,14,8,9,9,9,13,128,24,40,41,23,128,14,9,9,9,9,13, +114,9,37,143,20,14,13,1,1,15,1,160,15,1,14,14,21,1,37,27,27,37,27,53,22,23,7,7,5,34,23,22, +1,1,22,23,34,1,6,10,10,36,36,82,165,144,144,16,1,6,10,10,35,36,83,27,27,37,27,53,22,23,7,7, +5,34,23,22,1,1,22,23,34,160,144,144,254,240,1,39,17,40,9,9,14,14,9,9,31,1,1,31,9,9,14,14, +9,9,40,17,254,217,1,13,14,20,15,1,1,15,20,14,13,1,0,0,0,2,0,0,255,192,1,128,1,192,0,51, +0,62,0,0,1,50,23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6,35,33,34, +39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33,3,39,7,6,7,21,51,53, +38,39,49,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1, +46,68,68,46,1,14,9,9,9,9,14,1,64,92,68,68,27,1,192,1,27,1,192,9,9,14,14,9,9,11,66,47, +68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,254, +143,68,68,29,39,11,11,39,29,0,0,0,0,3,0,0,255,192,1,128,1,192,0,51,0,60,0,71,0,0,1,50, +23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54, +51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33,7,51,54,61,1,35,21,20,23,17,51,38,47,1, +7,6,7,6,7,49,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192,14,9,9,9, +9,14,1,46,68,68,46,1,14,9,9,9,9,14,1,64,241,161,16,192,15,161,5,7,68,68,6,5,1,1,1,192, +9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47, +66,11,9,9,14,14,9,9,128,24,29,11,11,29,24,255,0,8,7,68,68,6,7,1,1,0,0,0,0,2,0,0, +255,192,1,128,1,192,0,51,0,61,0,0,1,50,23,49,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23, +22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,52,55,54,51,33, +7,23,55,54,55,53,35,21,22,23,1,96,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,254,192, +14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9,9,14,1,64,228,68,68,27,1,192,1,27,1,192,9,9, +14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11, +9,9,14,14,9,9,143,68,68,28,40,11,11,40,28,0,0,3,0,0,255,192,1,128,1,192,0,51,0,61,0,71, +0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6,35,21,6,15,1,23,22,23,21,50,23,22,21,20,7,6, +35,33,34,39,38,53,52,55,54,51,53,54,63,1,39,38,39,53,34,39,38,53,23,21,22,31,1,55,54,55,53,35, +17,51,53,38,47,1,7,6,7,21,0,9,9,14,1,64,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,9, +9,14,254,192,14,9,9,9,9,14,1,46,68,68,46,1,14,9,9,96,1,27,68,68,27,1,192,192,1,27,68,68, +27,1,1,160,14,9,9,9,9,14,14,9,9,11,66,47,68,68,47,66,11,9,9,14,14,9,9,9,9,14,14,9, +9,11,66,47,68,68,47,66,11,9,9,14,32,11,40,28,68,68,28,40,11,254,128,11,39,29,68,68,29,39,11,0, +0,1,0,32,255,192,1,192,1,192,0,48,0,0,1,21,20,7,6,7,21,33,53,39,38,39,53,54,63,1,21,22, +23,54,55,53,54,55,54,55,50,23,22,23,54,51,22,23,22,23,21,54,55,50,23,22,23,54,51,22,23,22,23,1, +192,18,17,29,255,0,53,42,1,1,16,31,1,15,15,1,1,13,14,20,19,14,13,2,13,19,20,14,13,1,14,26, +18,13,13,3,11,14,20,14,13,1,1,48,120,38,31,31,20,128,128,39,32,52,69,23,14,24,45,15,1,1,15,128, +20,14,13,1,13,13,19,13,1,13,14,20,6,21,1,11,11,17,7,1,13,14,20,0,0,1,0,0,255,192,1,224, +1,192,0,69,0,0,1,21,6,7,6,7,35,38,47,1,38,53,52,55,54,55,50,31,1,17,52,55,54,51,50,23, +22,29,1,22,23,54,55,53,52,55,54,51,50,23,22,29,1,22,23,54,55,53,52,55,54,51,50,23,22,29,1,22, +23,54,55,53,52,55,54,51,50,23,22,21,1,224,2,50,49,75,38,82,59,113,12,11,12,17,16,12,60,9,9,14, +14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9, +9,1,64,208,75,49,50,2,1,58,113,12,16,16,12,11,1,12,59,1,23,14,9,9,9,9,14,176,15,1,1,15, +208,14,9,9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,176,15,1,1,15,112,14,9,9,9,9,14,0, +0,1,0,0,0,0,2,0,1,128,0,58,0,0,1,21,6,7,6,7,35,38,39,38,39,52,55,38,39,38,53,54, +55,35,38,39,38,53,52,55,54,59,1,39,38,39,52,55,54,55,50,23,5,22,51,54,55,54,53,52,47,1,55,54, +55,51,50,31,1,22,23,22,21,2,0,2,40,41,61,80,20,14,13,1,7,17,11,11,1,21,190,17,11,12,12,11, +17,230,210,27,1,2,10,28,6,6,1,23,3,2,11,4,1,11,73,15,14,23,48,16,13,38,39,5,1,1,0,111, +62,41,40,2,1,13,14,20,14,11,4,13,12,18,26,13,1,11,11,17,17,11,11,68,10,28,6,6,27,1,2,87, +1,1,10,3,2,11,4,23,18,17,1,10,28,31,48,6,5,0,0,0,0,1,0,0,0,0,2,0,1,128,0,40, +0,0,37,21,6,7,35,38,39,53,39,35,34,39,38,39,54,55,54,55,51,54,63,1,54,39,38,39,35,38,39,38, +53,54,55,54,51,33,22,31,1,22,21,2,0,1,15,128,15,1,85,172,13,9,9,1,1,18,18,27,105,22,8,11, +5,9,9,16,181,27,18,18,1,9,9,12,1,15,42,24,129,15,119,103,15,1,1,15,16,64,9,8,13,28,19,18, +1,1,21,32,16,13,12,1,1,18,19,28,13,8,9,1,33,186,21,24,0,1,0,32,255,192,2,32,1,192,0,82, +0,0,1,52,39,49,38,39,6,15,1,6,35,38,39,52,53,55,54,53,52,39,38,39,6,15,1,6,7,38,47,1, +38,39,6,7,6,23,20,31,1,22,21,6,7,34,47,1,38,39,34,7,6,21,20,31,1,22,21,6,35,34,47,1, +38,39,6,7,6,21,20,31,1,22,23,51,22,55,54,55,54,55,19,54,53,2,32,7,6,19,23,8,34,4,10,13, +1,36,1,8,8,16,24,7,38,6,22,21,7,52,7,24,20,6,7,1,1,50,1,1,11,8,2,47,9,22,13,9, +10,1,70,1,1,7,3,3,60,14,17,18,10,11,12,122,50,69,51,13,26,27,27,26,13,74,2,1,63,8,12,12, +1,1,23,125,10,1,13,1,2,167,3,4,11,11,10,1,2,23,177,21,1,1,20,209,23,2,1,13,12,6,4,4, +202,1,2,10,1,8,144,23,1,9,8,15,5,5,216,1,1,8,2,61,12,1,1,12,11,16,16,12,123,48,1,1, +8,8,22,22,44,1,15,5,4,0,0,0,0,4,0,0,255,192,1,192,1,192,0,48,0,59,0,70,0,81,0,0, +37,34,7,38,39,38,35,6,7,38,39,38,35,34,7,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7, +20,31,1,22,23,22,59,1,54,55,54,55,53,38,39,38,39,7,6,7,38,39,53,54,55,22,23,21,51,6,7,38, +39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21,1,144,14,11,3,13,13,18,27,14,4,13,12,18, +19,13,12,11,16,18,11,12,56,13,19,16,12,11,1,8,91,20,28,29,32,96,61,41,40,2,1,13,14,20,160,1, +15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,224,7,17,11,11,1,22, +17,11,11,12,148,17,11,12,12,11,17,254,189,75,16,11,11,18,13,11,122,25,15,14,2,40,41,61,96,20,14,13, +1,176,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96, +0,5,0,32,255,192,1,192,1,192,0,12,0,29,0,49,0,69,0,115,0,0,37,53,52,39,38,35,34,7,6,29, +1,22,23,39,54,51,49,50,51,39,38,39,6,7,6,21,20,31,1,63,1,34,7,49,6,29,1,20,23,22,51,50, +55,54,61,1,52,39,38,35,7,50,55,49,54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,23,6,7,34, +39,38,39,6,15,1,34,35,34,39,38,53,52,63,1,54,55,38,39,38,7,34,15,1,6,21,20,31,1,22,23,22, +23,51,54,55,54,55,6,35,38,39,1,0,9,9,14,14,9,9,43,21,85,2,3,1,1,85,9,20,16,8,8,3, +82,54,245,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,48,18,30,21, +16,16,7,11,36,48,2,2,11,4,1,11,46,28,2,2,15,16,7,6,6,104,28,2,18,15,35,34,45,75,63,46, +46,16,13,14,30,18,161,255,14,9,9,9,9,14,216,2,37,36,1,199,18,1,1,10,10,11,6,7,191,17,27,9, +9,14,64,14,9,9,9,9,14,64,14,9,9,128,9,9,14,96,14,9,9,9,9,14,96,14,9,9,10,21,1,12, +11,19,34,13,15,10,3,3,11,4,14,10,29,25,8,8,1,2,32,11,27,6,7,54,42,25,25,1,1,37,37,59, +6,1,21,0,0,2,0,0,0,32,2,128,1,96,0,36,0,66,0,0,1,38,15,1,39,38,7,6,7,17,20,23, +22,51,50,55,54,61,1,23,22,51,50,63,1,21,20,23,22,51,50,55,54,53,17,38,39,37,35,34,7,6,21,20, +23,22,59,1,21,20,23,22,51,50,55,54,61,1,51,50,55,54,53,52,39,38,35,2,106,21,15,118,118,15,21,21, +1,9,9,14,14,9,9,86,10,16,16,10,86,9,9,14,14,9,9,1,21,254,118,192,14,9,9,9,9,14,64,9, +9,14,14,9,9,64,14,9,9,9,9,14,1,94,6,17,158,158,17,6,8,22,255,0,14,9,9,9,9,14,160,115, +12,12,115,160,14,9,9,9,9,14,1,0,22,8,2,9,9,14,14,9,9,223,14,9,9,9,9,14,223,9,9,14, +14,9,9,0,0,3,0,0,255,192,2,0,1,192,0,26,0,51,0,63,0,0,1,6,7,49,6,7,49,6,7,22, +23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,22,7,6,35,34,47,1,35,21,6,7,38,39,53, +54,55,51,22,23,22,23,6,7,23,39,35,21,51,50,55,54,53,52,39,38,35,1,0,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,94,7,19,5,5,15,7,38,60,2,22,22,2,2,22,88, +34,23,22,1,2,35,35,78,64,64,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,254,162,21,11,2,14,82,72,22,2,2,22,208,22,2,1,22,23,34,44,23,75, +174,64,9,9,14,14,9,9,0,3,0,0,255,192,2,128,1,192,0,18,0,39,0,44,0,0,37,33,34,7,6,21, +20,23,22,51,33,50,55,54,53,52,39,38,35,19,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39, +38,39,3,33,17,33,17,2,0,254,127,13,9,9,9,9,13,1,128,14,10,9,9,9,14,80,253,224,20,14,13,1, +1,13,14,20,2,32,20,14,13,1,1,13,14,20,16,254,0,2,0,0,9,9,13,13,10,10,9,9,14,14,9,9, +1,192,1,13,14,20,254,192,20,14,13,1,1,13,14,20,1,64,20,14,13,1,254,160,1,32,254,224,0,3,0,0, +255,192,1,192,1,192,0,35,0,49,0,74,0,0,19,52,55,49,54,51,50,23,22,29,1,51,53,52,55,54,51,50, +23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,1,6,7,49,6,7,33,38,39,38,39,17,33,17, +39,21,35,6,7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,38,39,6,7,96,9,9,14,14,9,9, +128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,1,96,1,13,14,20,254,160,20,14,13,1,1, +192,248,56,22,2,2,22,56,2,22,22,2,56,22,2,2,22,56,2,22,22,2,1,160,14,9,9,9,9,14,32,32, +14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,254,80,20,14,13,1,1,13,14,20,1,16,254,240, +192,56,2,22,22,2,56,22,2,2,22,56,2,22,22,2,56,22,2,2,22,0,0,0,0,3,0,0,255,192,1,192, +1,192,0,34,0,47,0,58,0,0,19,21,51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54, +55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,55,38,39,35, +6,7,22,23,51,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160, +1,192,1,13,14,20,254,160,20,14,13,1,1,56,22,2,2,22,176,22,2,2,22,176,1,160,32,32,14,9,9,9, +9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1, +16,184,2,22,22,2,2,22,22,2,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,72,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1, +23,22,55,54,47,1,55,160,128,9,9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9, +9,160,1,192,1,13,14,20,254,160,20,14,13,1,1,48,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16, +48,47,17,16,15,15,46,46,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9, +9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,112,16,17,14,14,47,47,14,14,17,16,48,47,17,16, +15,15,46,46,15,15,16,17,47,48,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,62,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,5,54,39,38,15,1,39,38,7,6,31,1,22,63,1,160,128,9, +9,14,14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160, +20,14,13,1,1,72,15,15,16,17,95,48,16,17,14,14,64,17,16,112,1,160,32,32,14,9,9,9,9,14,32,1, +13,14,20,48,48,20,14,13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,112,16,17, +14,14,95,47,14,14,17,16,64,15,15,112,0,1,0,32,255,224,2,32,1,160,0,33,0,0,19,50,23,49,22,29, +1,55,54,23,22,23,21,55,54,23,22,23,17,6,7,6,7,33,38,39,38,39,17,52,55,54,59,1,128,14,9,9, +157,12,11,11,1,157,12,11,11,1,1,13,14,20,254,96,20,14,13,1,9,9,14,64,1,160,9,9,14,151,84,6, +7,6,14,63,84,6,7,6,14,254,232,20,14,13,1,1,13,14,20,1,112,14,9,9,0,3,0,32,255,192,1,64, +1,192,0,17,0,34,0,49,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,38,39,6, +7,6,7,22,23,54,55,54,55,54,55,54,55,3,53,22,55,22,55,21,20,7,6,35,34,39,38,53,1,64,2,40, +41,61,61,41,40,2,2,40,41,61,61,41,40,2,128,1,15,41,27,27,1,1,15,15,1,1,18,18,27,15,1,48, +16,16,16,16,9,9,14,14,9,9,1,48,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,80,15,1,1, +27,27,41,15,1,1,15,27,18,18,1,1,15,254,96,163,3,1,1,3,163,14,9,9,9,9,14,0,0,3,0,6, +255,192,1,249,1,192,0,29,0,54,0,67,0,0,19,54,55,49,54,51,50,23,22,21,51,50,31,1,22,15,1,6, +35,33,34,39,38,39,53,54,55,54,59,1,1,20,7,49,6,35,33,34,47,1,38,63,1,54,55,51,53,51,21,51, +22,23,22,29,1,7,34,39,49,38,39,53,51,21,20,7,6,35,223,1,9,9,13,14,10,9,153,7,5,48,9,9, +48,5,7,254,134,13,9,9,1,1,9,9,13,160,1,1,9,9,14,254,135,7,5,48,9,9,48,5,7,152,65,160, +14,9,9,225,13,9,9,1,65,9,10,14,1,160,14,9,9,9,9,14,5,48,11,11,48,5,9,9,14,64,14,9, +9,254,224,14,9,9,5,48,11,11,48,5,1,32,32,1,9,9,13,65,192,9,9,14,96,96,14,9,9,0,0,0, +0,3,0,0,255,228,2,64,1,156,0,4,0,15,0,27,0,0,5,39,17,23,17,19,55,54,23,22,23,17,6,15, +1,17,5,55,17,7,6,39,38,39,17,54,55,49,1,128,192,192,32,127,13,9,10,1,1,14,145,254,111,145,127,12, +10,10,1,1,14,28,55,1,129,55,254,127,1,132,50,5,7,7,13,254,177,15,7,58,1,131,7,58,254,125,51,4, +7,7,13,1,79,15,7,0,0,1,255,255,255,195,1,255,1,192,0,27,0,0,1,17,6,7,6,43,1,7,6,39, +38,39,53,35,34,39,38,39,17,54,55,54,55,33,22,23,22,23,1,255,1,18,18,27,144,125,6,6,6,1,96,27, +18,18,1,1,18,18,27,1,128,28,18,17,1,1,129,254,225,27,18,18,94,4,3,3,8,84,18,18,27,1,31,27, +18,17,1,1,18,18,26,0,0,3,0,0,255,192,2,0,1,192,0,26,0,45,0,64,0,0,1,6,7,49,6,7, +49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,7,21,20,7,6,35,34,39,38,61,1, +52,55,54,51,50,23,22,21,51,21,20,7,6,35,34,39,38,61,1,52,55,54,51,50,23,22,21,1,0,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,32,9,9,14,14,9,9,9,9,13,13, +10,10,128,9,9,14,14,9,9,9,9,13,13,10,10,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,191,128,14,10,9,9,9,14,129,13,9,9,9,9,13,128,14,10,9,9,9,14,129, +13,9,9,9,9,13,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,39,0,0,1,6,7,49,6,7,49,6, +7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,6,7,35,38,39,53,54,55,51,22,23,21, +1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,96,2,22,144,22,2, +2,22,144,22,2,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254, +184,22,2,2,22,144,22,2,2,22,144,0,0,4,0,0,255,192,1,192,1,192,0,32,0,44,0,53,0,62,0,0, +19,54,55,49,54,55,22,23,22,23,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51, +53,23,51,53,38,39,38,39,6,7,6,7,21,7,54,55,38,39,6,7,22,23,55,6,7,22,23,54,55,38,39,112, +1,32,31,48,48,31,32,1,64,20,14,13,1,1,27,27,41,255,0,41,27,27,1,1,13,14,20,64,48,128,1,18, +18,27,27,18,18,1,24,22,2,2,22,22,2,2,22,176,22,2,2,22,22,2,2,22,1,80,48,31,32,1,1,32, +31,48,48,1,13,14,20,208,41,27,27,1,1,27,27,41,208,20,14,13,1,48,48,48,27,18,18,1,1,18,18,27, +48,96,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,0,0,4,0,0,255,192,2,64,1,191,0,42, +0,53,0,64,0,75,0,0,19,51,39,38,55,54,31,1,51,22,23,22,21,20,7,6,35,7,6,7,6,35,33,34, +39,38,47,1,34,39,38,53,52,55,54,55,51,55,54,23,22,15,1,23,38,39,6,7,21,22,23,54,55,53,51,21, +22,23,54,55,53,38,39,6,7,51,38,39,6,7,21,22,23,54,55,53,172,232,81,9,19,20,12,93,86,14,9,9, +9,9,14,52,6,17,17,22,254,227,22,17,16,6,52,14,9,9,9,9,14,86,93,12,20,19,9,81,19,1,15,14, +2,2,14,15,1,80,2,14,16,1,1,16,14,2,145,1,15,15,1,1,15,15,1,1,1,156,20,12,9,19,178,1, +9,9,13,14,9,9,209,21,13,14,14,13,21,209,9,9,14,13,9,9,1,178,19,9,12,20,156,112,14,2,2,14, +96,15,1,1,15,96,96,15,1,1,15,96,14,2,2,14,14,2,2,14,96,15,1,1,15,96,0,0,0,3,0,0, +255,192,2,0,1,192,0,26,0,44,0,89,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54, +55,54,55,38,39,38,39,38,39,21,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,23,7,6,7,34, +35,21,23,22,7,6,35,38,47,1,38,35,34,15,1,6,7,34,39,38,63,1,53,34,35,38,47,1,38,55,54,31, +1,22,63,1,54,23,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,17,11,12,12,11,17,17,11,12,12,11,17,119,60,3,4,2,2,31,5,20,4,4,16,7,25,3,5,5,3, +25,7,16,4,4,20,5,31,2,2,4,3,60,20,4,8,22,59,46,46,59,22,8,4,20,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,80,12,11,17,17,11,12,12,11,17,17,11,12, +135,17,1,1,63,87,21,10,1,1,15,71,5,5,71,15,1,1,10,21,87,63,1,1,17,8,22,20,4,17,13,13, +17,4,20,22,8,0,0,0,0,4,0,0,255,192,1,191,1,192,0,12,0,30,0,43,0,89,0,0,5,39,6,7, +6,7,23,22,51,50,55,54,39,1,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,51,15,1,6,23,22, +23,22,51,54,63,1,39,21,55,39,38,47,1,34,7,6,15,1,6,23,22,23,22,51,50,63,1,21,20,31,1,21, +20,23,22,51,50,55,54,61,1,52,47,1,53,23,22,23,22,55,54,55,54,39,1,189,117,5,6,7,8,117,5,8, +5,4,11,7,254,210,20,14,14,14,13,20,20,14,13,1,1,13,13,20,47,31,3,7,6,13,4,4,24,7,22,53, +218,77,30,47,24,28,23,23,12,47,5,4,4,12,7,7,19,10,35,9,87,9,9,14,14,9,9,19,45,70,9,12, +13,11,11,2,1,7,38,172,6,6,4,3,171,7,3,8,14,1,135,14,13,20,20,14,13,1,1,13,14,20,20,13, +14,253,124,14,11,10,4,1,1,23,88,53,1,79,103,37,1,1,14,14,25,94,12,12,12,7,3,18,70,56,13,10, +86,83,14,9,9,9,9,14,83,26,19,45,94,94,11,2,1,7,9,12,13,11,0,0,0,5,0,0,255,224,2,64, +1,160,0,3,0,24,0,44,0,60,0,72,0,0,55,51,39,7,37,33,6,7,6,7,17,22,23,22,23,33,54,55, +54,55,17,38,39,38,39,3,6,35,34,47,1,35,7,6,39,38,63,1,54,51,50,31,1,22,7,23,35,38,39,53, +54,55,51,22,23,22,23,6,7,6,7,53,35,21,51,54,55,54,55,38,39,38,39,171,42,21,21,1,85,254,64,27, +18,18,1,1,18,18,27,1,192,27,18,18,1,1,18,18,27,237,6,5,14,7,10,82,10,11,21,18,7,72,8,14, +14,7,72,8,18,109,56,22,2,2,22,56,41,27,27,1,1,27,27,41,32,32,20,14,13,1,1,13,14,20,168,42, +42,248,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,194,2,13,19,19,18,8,11,21, +144,12,12,144,21,12,2,2,22,144,22,2,1,27,27,41,41,27,27,1,144,96,1,13,14,20,20,14,13,1,0,0, +0,4,0,0,255,193,2,0,1,191,0,18,0,39,0,66,0,93,0,0,1,38,7,6,23,22,21,20,7,6,23,22, +51,50,55,54,55,38,39,55,38,7,6,23,22,23,6,7,6,23,22,51,50,55,54,55,54,53,38,39,55,38,7,6, +23,22,23,22,21,20,7,6,7,6,23,22,51,50,55,54,55,54,53,52,39,38,39,7,50,63,1,54,47,1,38,7, +6,7,6,23,22,23,22,63,1,54,47,1,38,15,1,38,55,23,1,29,19,15,13,16,18,18,16,13,7,11,9,7, +34,1,1,34,60,18,16,12,16,52,1,1,52,16,12,8,11,8,7,34,18,19,2,69,61,18,15,13,16,42,23,23, +23,23,42,16,13,7,11,8,7,51,27,28,28,27,51,255,17,8,34,5,15,67,16,14,69,23,22,22,23,69,14,16, +67,15,5,34,7,18,53,29,29,53,1,10,12,15,19,15,15,22,22,15,15,19,8,5,29,45,45,29,75,12,15,19, +15,44,67,67,44,16,18,9,6,27,39,38,44,89,59,74,12,15,19,15,35,48,48,54,54,49,48,35,15,19,8,5, +41,58,58,66,66,57,57,42,142,15,85,19,10,42,9,12,70,90,89,89,90,70,12,9,42,11,18,84,16,1,5,87, +87,6,0,0,0,20,0,0,255,224,2,128,1,160,0,17,0,35,0,44,0,62,0,71,0,89,0,98,0,116,0,134, +0,152,0,170,0,179,0,197,0,206,0,224,0,233,0,251,1,4,1,22,1,31,0,0,19,6,7,49,6,7,38,39, +38,39,54,55,54,55,22,23,22,31,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38, +39,6,7,22,23,7,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,39, +23,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,47,1,54,55,49,54, +55,22,23,22,23,6,7,6,7,38,39,38,39,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,33, +6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,51,6,7,49,6,7,38,39,38,39,54,55,54,55,22, +23,22,23,39,6,7,22,23,54,55,38,39,7,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54, +55,38,39,6,7,22,31,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55, +38,47,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,31,1,6,7, +49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,22,23,54,55,38,39,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,32,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15, +1,1,15,96,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18, +18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,64,1,18,18,27,27, +18,18,1,1,18,18,27,27,18,18,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1, +15,15,1,1,15,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,64, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,224,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,64,15,1,1,15,15,1,1,15,64,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,64,15,1,1,15,15,1,1,15,1,96,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,16,27,18,18,1,1,18,18,27,27,18,18,1, +1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,160,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,176,27,18,18,1,1,18,18, +27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1, +18,18,27,16,1,15,15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15, +15,1,1,15,15,1,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,15,15,1,1,15,15,1, +0,6,0,0,255,192,2,0,1,191,0,17,0,37,0,55,0,104,0,130,0,156,0,0,55,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,35,7,38,35,49,34,7,6,21,20,31,1,22,51,50,55,54,53,52,47,1,7,34, +7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,1,38,7,49,6,7,49,6,7,6,23,22,51,54,55,54, +55,54,23,22,23,22,7,6,15,1,21,20,7,6,7,6,7,6,21,22,23,22,55,54,55,54,55,54,55,54,39,38, +39,7,50,23,49,22,21,22,23,54,55,38,39,38,39,6,7,6,7,22,23,54,55,52,55,54,51,55,38,7,49,6, +7,6,23,22,23,22,23,22,21,20,23,22,51,50,55,54,53,38,39,38,39,160,13,10,9,9,10,13,14,9,9,9, +9,14,73,10,13,13,10,9,9,64,10,13,13,10,9,9,64,55,14,9,9,9,9,14,14,9,9,9,9,14,1,0, +56,49,48,32,32,6,2,10,10,15,26,5,6,32,33,46,55,28,29,10,10,33,17,15,15,23,11,8,8,1,10,11, +15,43,29,29,5,61,4,1,35,35,59,48,17,11,12,2,22,22,2,1,25,25,37,37,25,25,1,2,22,22,2,12, +11,17,158,13,12,12,6,5,4,4,12,36,21,21,9,9,14,14,9,9,1,30,31,52,128,9,9,13,13,9,9,9, +9,13,13,9,9,41,9,9,10,13,13,10,64,9,9,10,13,13,10,64,87,9,9,14,14,9,9,9,9,13,13,10, +10,1,122,14,17,17,40,39,52,15,9,10,2,27,44,28,28,1,5,44,43,55,45,34,18,13,24,17,17,5,2,9, +9,12,15,9,9,2,8,30,30,44,63,88,62,49,49,17,130,12,11,17,22,2,2,22,37,25,25,1,1,25,25,37, +22,2,2,22,17,11,12,197,5,4,4,12,13,12,12,6,18,34,35,44,14,9,9,9,9,14,62,51,50,26,0,0, +0,2,0,0,255,194,2,128,1,192,0,69,0,139,0,0,55,22,23,22,23,22,55,54,55,54,39,38,39,55,54,55, +54,39,38,39,38,15,1,55,54,55,54,39,38,39,38,15,1,55,54,39,38,39,38,7,6,15,1,6,21,22,23,22, +23,51,54,55,54,39,38,39,38,7,6,7,6,7,34,39,38,53,52,55,54,51,37,35,6,7,6,23,22,23,22,55, +54,55,54,55,22,23,22,21,20,7,6,35,38,39,38,39,38,7,6,7,6,23,22,23,7,6,7,6,23,22,23,22, +63,1,7,6,7,6,23,22,23,22,63,1,7,6,23,22,23,22,55,54,63,1,54,53,38,39,38,39,200,27,11,5, +11,12,13,12,6,5,4,18,47,80,13,6,6,3,4,11,12,13,99,81,10,1,1,9,9,13,12,11,100,22,6,5, +4,13,12,12,12,6,84,15,1,30,31,45,100,50,29,8,3,2,11,12,12,13,8,12,21,17,11,12,12,11,17,1, +77,100,50,29,8,3,2,11,12,12,13,8,12,21,17,11,12,12,11,17,27,11,5,11,12,13,12,6,5,4,18,47, +80,13,6,6,3,4,11,12,13,99,81,10,1,1,9,9,13,12,11,100,22,5,4,4,13,12,12,12,6,84,15,1, +30,31,45,208,1,26,12,6,5,4,5,11,12,13,47,16,23,4,11,12,13,13,6,6,3,29,70,9,13,12,11,10, +1,1,9,86,49,12,12,12,6,5,4,4,13,188,33,37,45,31,30,1,5,41,12,12,13,8,7,3,2,11,17,1, +12,11,17,17,11,12,112,5,41,12,12,13,8,7,3,2,11,18,1,1,11,11,17,17,11,11,1,25,13,6,5,4, +5,11,12,13,47,17,22,4,12,11,13,13,6,6,3,28,69,9,13,12,11,10,1,1,9,86,49,12,12,12,6,6, +5,4,12,188,32,37,45,31,30,1,0,0,0,4,0,0,255,193,1,255,1,193,0,18,0,44,0,63,0,122,0,0, +55,38,35,34,15,1,6,21,20,23,22,51,50,63,1,54,53,54,39,55,52,55,49,54,51,50,23,22,21,22,23,54, +55,38,39,38,39,6,7,6,7,22,23,54,55,37,52,39,38,35,34,15,1,6,21,20,23,22,51,50,63,1,54,39, +7,54,39,49,38,39,49,38,39,6,7,6,7,6,23,20,23,22,51,54,55,54,55,54,55,22,23,22,23,22,21,6, +7,6,15,1,21,20,7,6,7,6,7,6,21,20,23,22,23,50,55,54,55,54,55,54,55,54,39,192,10,13,12,10, +138,9,9,10,12,13,10,137,9,1,9,8,12,11,17,17,11,12,2,22,22,2,1,25,25,37,37,25,25,1,2,22, +22,2,1,55,9,10,13,13,10,40,9,9,10,13,12,10,42,9,1,96,1,17,16,39,38,66,76,38,38,12,12,1, +10,9,14,26,5,6,30,31,44,40,25,24,11,11,2,18,18,8,17,15,15,23,11,8,8,10,9,13,4,25,24,26, +25,7,44,11,11,2,129,8,8,138,10,13,14,8,9,9,138,10,12,12,11,79,17,11,12,12,11,17,22,2,2,22, +37,25,25,1,1,25,25,37,22,2,2,22,209,13,10,9,9,43,10,12,13,10,9,9,41,10,14,211,31,41,41,32, +31,2,3,36,37,39,38,7,14,9,9,2,28,42,28,27,1,1,20,20,28,28,23,43,28,28,7,17,13,24,17,17, +5,2,9,9,12,13,9,9,1,8,8,24,24,49,49,44,45,18,0,0,0,3,0,0,255,192,2,0,1,192,0,59, +0,73,0,122,0,0,37,39,38,7,6,31,1,35,6,7,6,23,22,59,1,22,23,6,7,35,6,7,6,23,22,59, +1,22,23,6,7,35,6,7,6,23,22,59,1,22,23,6,7,35,6,7,6,23,22,59,1,54,55,54,55,53,38,39, +38,47,1,54,51,50,31,1,39,38,7,6,7,6,31,1,37,6,15,1,39,38,35,6,7,6,31,1,22,7,6,47, +1,38,35,6,7,6,31,1,22,7,6,47,1,38,7,6,7,6,31,2,22,23,22,23,21,54,55,54,55,53,38,39, +1,75,108,22,8,4,20,47,199,19,6,1,7,7,11,128,7,1,1,7,159,19,6,1,7,7,11,160,7,1,1,7, +127,19,6,1,7,7,11,128,7,1,1,7,95,19,6,1,7,7,11,208,51,34,34,1,1,23,23,38,134,9,10,8, +9,16,21,7,19,12,6,5,3,15,1,34,22,2,2,60,7,19,11,6,6,3,39,1,7,7,3,47,7,19,12,6, +6,3,44,1,6,8,2,34,7,19,11,6,6,3,34,74,48,29,29,1,29,17,17,1,3,22,206,33,4,20,22,8, +17,1,18,12,8,9,1,7,7,1,1,18,12,8,9,1,7,7,1,1,18,12,8,9,1,7,7,1,1,18,12,8, +9,1,34,34,51,32,41,31,32,14,62,4,2,5,66,18,1,2,9,9,11,49,35,2,22,50,190,18,2,9,9,12, +122,7,3,1,7,151,18,2,9,9,11,138,7,3,2,7,106,19,1,2,9,9,11,108,23,17,40,40,51,28,16,28, +28,35,113,22,1,0,0,0,0,4,0,0,255,192,2,128,1,192,0,30,0,55,0,63,0,80,0,0,19,54,55,49, +54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,23,22,7,6,39,1,38,55,54,31,3,54,53,38,39,50, +51,54,51,22,23,22,23,20,7,23,54,53,38,39,38,39,6,7,19,1,54,55,1,6,7,49,37,38,55,5,48,49, +34,35,38,39,38,39,38,39,38,39,49,151,33,42,43,51,61,48,48,36,35,23,23,12,4,4,11,20,20,29,105,16, +12,15,19,253,176,16,12,15,19,112,72,90,7,1,7,1,2,3,2,41,27,27,1,9,40,17,2,40,41,61,57,40, +171,254,173,12,16,1,107,24,28,254,152,4,3,1,40,5,4,61,48,48,36,35,23,23,12,1,99,27,17,16,1,1, +23,23,34,33,35,35,28,12,12,25,31,32,31,82,15,19,16,12,1,208,15,19,16,12,88,57,70,12,17,16,15,1, +1,27,27,41,22,18,30,31,39,60,41,41,2,2,37,254,193,1,9,21,21,254,226,13,8,201,10,10,232,1,23,23, +34,34,34,35,28,0,0,0,0,1,0,0,255,224,1,192,1,160,0,70,0,0,1,17,6,7,6,7,6,35,38,39, +38,39,6,7,53,54,55,22,23,22,23,50,55,53,6,35,38,39,38,39,34,7,6,7,6,7,17,20,7,6,35,34, +39,38,53,17,52,55,54,51,50,23,22,29,1,54,55,54,55,54,51,22,23,22,23,50,55,54,55,54,55,1,192,14, +12,31,20,20,22,45,30,30,45,30,21,21,30,45,30,30,45,28,27,27,28,45,30,30,45,23,18,17,16,19,22,9, +9,14,14,9,9,9,9,13,13,10,10,22,19,16,17,18,23,45,30,30,45,22,20,20,31,11,15,1,144,254,176,5, +4,12,6,5,2,14,14,2,1,7,64,7,1,2,14,14,2,9,208,9,2,14,14,2,5,5,6,8,5,254,205,14, +9,9,9,9,14,1,129,13,9,9,9,9,13,14,5,8,6,5,5,2,14,14,2,5,6,12,4,5,0,6,0,0, +0,0,2,128,1,129,0,8,0,17,0,52,0,92,0,101,0,110,0,0,55,51,50,55,54,61,1,35,17,55,22,23, +6,7,38,39,54,55,1,34,15,1,48,49,20,49,6,21,20,23,22,23,22,55,48,49,48,49,55,54,23,22,15,1, +23,22,23,53,38,39,38,35,15,2,6,39,38,39,38,55,54,63,1,35,34,7,6,7,21,51,23,22,55,54,55,23, +22,55,54,63,1,23,22,55,54,63,1,54,39,38,47,1,55,21,20,23,22,59,1,17,35,23,38,39,54,55,22,23, +6,7,0,64,14,9,9,96,48,15,1,1,15,15,1,1,15,1,45,13,9,98,13,11,10,16,16,14,80,12,11,8, +9,27,146,4,4,31,40,40,44,8,14,30,24,28,29,21,20,1,1,22,82,6,44,40,40,31,18,91,21,26,25,18, +18,12,15,15,10,32,5,11,12,13,9,10,8,1,2,10,149,209,9,9,13,65,96,48,15,1,1,15,15,1,1,15, +64,9,9,14,224,255,0,64,1,15,15,1,1,15,15,1,1,0,8,90,1,12,16,15,13,10,2,1,11,73,9,10, +12,11,24,118,3,4,194,31,16,17,1,153,28,20,1,2,21,24,28,29,21,75,17,16,31,224,82,16,2,3,21,16, +9,2,1,12,38,4,8,1,1,11,11,11,13,12,9,122,89,224,14,9,9,1,0,224,1,15,15,1,1,15,15,1, +0,2,0,0,255,192,2,0,1,192,0,44,0,71,0,0,1,38,39,49,38,39,49,38,39,38,39,38,39,38,39,49, +6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,21,17,22,23,22,23,33,54,55,54,55,17,52,39,7,6,35, +34,47,1,53,54,55,54,55,54,55,54,55,54,55,22,23,22,23,22,23,22,23,21,7,1,238,12,16,15,32,31,59, +4,5,14,17,18,15,15,18,17,14,5,4,8,7,52,28,29,15,15,11,18,1,13,14,20,1,160,20,14,13,1,18, +191,22,25,25,22,145,13,32,31,80,5,6,1,1,11,12,14,11,6,5,79,32,31,14,145,1,29,9,12,12,23,23, +43,3,4,11,11,11,1,1,11,11,11,4,3,6,5,38,21,20,12,11,9,15,23,254,249,20,14,13,1,1,13,13, +20,1,8,23,15,205,16,16,113,46,11,24,23,58,4,4,1,1,8,8,9,9,4,4,58,23,24,11,46,113,0,0, +0,6,0,32,255,192,2,0,1,192,0,20,0,38,0,53,0,62,0,71,0,80,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19, +35,38,39,54,55,54,55,51,22,23,22,23,6,7,19,35,21,51,54,55,53,38,39,21,35,21,51,54,55,53,38,39, +21,35,21,51,54,55,53,38,39,1,128,254,224,27,18,18,1,1,18,18,27,1,32,27,18,18,1,1,18,18,27,144, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,160, +16,16,15,1,1,15,16,16,15,1,1,15,16,16,15,1,1,15,1,192,1,18,18,27,254,128,27,18,18,1,1,18, +18,27,1,128,27,18,18,1,128,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22, +1,1,22,23,34,15,1,1,64,96,1,15,64,15,1,128,96,1,15,64,15,1,128,96,1,15,64,15,1,0,0,0, +0,6,0,0,255,224,2,64,1,160,0,20,0,38,0,53,0,64,0,75,0,86,0,0,1,33,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,38,39,38,39,5,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19, +35,38,39,54,55,54,55,51,22,23,22,23,6,7,55,35,38,39,54,55,51,22,23,6,7,53,35,38,39,54,55,51, +22,23,6,7,53,35,38,39,54,55,51,22,23,6,7,2,0,254,64,27,18,18,1,1,18,18,27,1,192,27,18,18, +1,1,18,18,27,254,176,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64, +34,23,22,1,1,15,224,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15, +128,15,1,1,15,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,96,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,64,1,15,15,1,1, +15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,0,0,0,0,3,0,0,255,192,2,0, +1,192,0,26,0,44,0,58,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,21,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,17,38,39,54,55,54,55,51,22, +23,22,23,6,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,31, +20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,81,55,13,27,28,36,64,36,28,27,13,55,81,1,192,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,128,1,20,20,31,31,20,20,1,1, +20,20,31,31,20,20,1,254,192,2,54,32,20,19,1,1,19,20,32,54,2,0,0,0,0,4,0,0,255,192,1,128, +1,192,0,20,0,38,0,53,0,64,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38,39,54,55,54,55,51,22,23,22,23, +6,7,3,35,38,39,54,55,51,22,23,6,7,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1, +13,14,20,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22, +1,1,15,48,96,15,1,1,15,96,15,1,1,15,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160, +20,14,13,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23, +34,15,1,1,64,1,15,15,1,1,15,15,1,0,0,0,0,7,0,0,255,224,2,64,1,160,0,12,0,26,0,37, +0,48,0,59,0,77,0,92,0,0,1,33,6,7,6,7,21,33,53,38,39,38,39,1,22,23,49,22,23,33,54,55, +54,55,17,33,17,37,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6,7,35,38,39,54,55,21,51,22,23,6, +7,35,38,39,54,55,39,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,7,51,22,23,22,23,6,7, +35,38,39,54,55,54,55,2,16,254,32,20,14,13,1,2,64,1,13,14,20,253,240,1,13,14,20,1,224,20,14,13, +1,253,192,1,112,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15, +1,1,15,192,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,64,128,20,14,13,1,1,15,192,15,1,1, +13,14,20,1,160,1,13,14,20,16,16,20,14,13,1,254,112,20,14,13,1,1,13,14,20,1,48,254,208,240,1,15, +15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,160,1,13,14,20,15,1,1,15,20,14,13,1,0,0,0,3,0,16,255,193,1,48, +1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,7,21,6,7,22,23,22,51,50,55,54,55,38,39,55,53,38, +39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54,55,53,54,55,54, +51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32, +31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13, +1,31,1,1,22,23,34,125,211,15,1,1,15,211,12,33,20,14,14,14,14,20,33,12,44,167,48,31,32,1,1,32, +31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14,14,13,21,192,24,40, +33,23,22,1,0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,7,21,6,7,22, +23,22,51,50,55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39, +7,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,15,1,30,2,1, +13,14,20,20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34, +23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,125,163,15,1,1,15,163,12,33,20,14,14,14, +14,20,33,12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33, +40,24,192,21,13,14,14,13,21,192,24,40,33,23,22,1,0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65, +0,0,55,53,38,39,6,15,1,6,7,22,23,22,51,50,55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21, +6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23, +6,7,6,7,176,1,15,14,1,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31, +1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34, +125,115,15,1,1,15,115,12,33,20,14,14,14,14,20,33,12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40, +41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14,14,13,21,192,24,40,33,23,22,1,0,0,0, +0,3,0,16,255,193,1,48,1,192,0,18,0,41,0,65,0,0,55,53,38,39,6,15,1,6,7,22,23,22,51,50, +55,54,55,38,39,55,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49, +38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,176,1,15,14,1,1,30,2,1,13,14,20, +20,14,13,1,2,30,96,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1, +1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,125,51,15,1,1,15,51,12,33,20,14,14,14,14,20,33, +12,44,167,48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192, +21,13,14,14,13,21,192,24,40,33,23,22,1,0,0,0,0,3,0,16,255,193,1,48,1,192,0,22,0,46,0,64, +0,0,37,53,38,39,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,7,38,39,49,38,39,54, +55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,53,6,7,49,6,7,22,23,22,23,54,55,54,55,38, +39,38,39,1,16,1,32,31,47,47,32,33,1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31, +1,13,14,20,20,14,13,1,31,1,1,22,23,34,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,169,167, +48,31,32,1,1,32,31,48,167,37,52,61,40,41,1,1,41,40,61,52,37,169,1,22,23,33,40,24,192,21,13,14, +14,13,21,192,24,40,33,23,22,1,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,8,0,0, +255,224,2,0,1,160,0,17,0,35,0,53,0,71,0,89,0,107,0,125,0,168,0,0,37,34,7,49,6,21,20,23, +22,51,50,55,54,53,52,39,38,35,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,52,39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,53, +55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,51,50,55,49,54,53,52,39,38,35,34,7,6,21, +20,23,22,51,7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,47,1,38,15,1,38,39,38,7,39, +38,35,34,7,6,21,17,22,23,51,54,55,17,52,55,54,51,50,31,1,6,23,22,23,7,6,31,1,22,63,1,54, +39,1,32,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9, +9,9,14,14,9,9,9,9,14,192,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9, +9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,32,14,9,9,9,9,14,14,9,9,9,9,14,5,11,11, +12,6,27,32,32,29,16,31,42,43,33,22,1,15,32,15,1,11,10,15,15,10,17,15,2,2,20,7,9,9,11,12, +11,169,10,10,64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,64,9, +9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9,9,14,96,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,229,11, +9,9,7,20,2,2,15,17,29,39,30,37,254,186,15,1,1,15,1,76,15,10,11,11,16,29,32,32,27,6,12,11, +11,10,10,169,11,12,0,0,0,2,0,0,255,192,2,0,1,192,0,22,0,65,0,0,55,22,23,21,22,23,51,54, +55,53,33,21,22,23,51,54,55,53,54,55,53,33,21,37,33,53,54,55,54,31,1,6,23,6,31,1,22,63,1,54, +47,1,38,7,38,7,39,38,39,6,7,6,7,21,35,6,7,21,22,23,33,54,55,53,38,39,32,1,31,1,15,32, +15,1,1,0,1,15,32,15,1,31,1,254,64,1,208,254,112,1,7,8,7,13,11,23,9,9,11,12,11,105,10,10, +11,11,12,29,42,14,23,32,33,21,22,1,16,15,1,1,15,1,224,15,1,1,15,64,44,27,41,15,1,1,15,15, +15,15,1,1,15,41,27,44,32,32,128,179,8,3,4,6,14,42,29,12,11,11,10,10,105,11,12,11,9,9,23,11, +13,22,1,1,22,21,33,179,1,15,32,15,1,1,15,32,15,1,0,0,0,4,0,0,255,192,1,192,1,192,0,42, +0,68,0,86,0,122,0,0,19,6,7,49,6,7,49,6,7,22,23,22,23,38,39,38,39,38,53,54,55,54,55,22, +23,22,23,20,7,6,7,6,7,54,55,54,55,38,39,38,39,38,39,17,38,7,49,6,7,22,23,22,23,22,23,22, +51,50,55,54,55,54,55,54,55,38,39,38,7,53,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55, +38,39,49,38,39,6,7,6,7,22,23,54,55,48,51,38,39,54,55,54,55,22,23,22,23,6,7,50,49,48,49,22, +23,54,55,224,63,50,51,29,30,1,1,37,37,60,5,2,36,22,22,2,50,49,75,75,49,50,2,22,22,36,2,5, +60,37,37,1,1,30,29,51,50,63,26,18,19,1,1,6,7,7,4,12,12,15,15,12,12,4,7,7,6,1,1,19, +18,26,24,16,15,1,1,16,16,23,23,16,16,1,1,15,16,24,144,2,40,41,61,61,41,40,2,2,51,6,26,1, +36,2,1,27,27,41,41,27,27,1,2,36,1,26,6,51,2,1,192,1,30,29,51,50,63,70,55,54,27,33,25,25, +38,38,47,75,49,50,2,2,50,49,75,47,38,38,25,25,33,27,54,55,70,63,50,51,29,30,1,254,200,1,10,9, +26,27,41,41,24,14,4,5,5,4,14,24,41,41,27,26,9,10,1,32,1,15,16,24,24,16,15,1,1,15,16,24, +24,16,15,1,56,61,41,40,2,2,40,41,61,69,42,20,15,28,48,41,27,27,1,1,27,27,41,48,28,15,20,42, +69,0,0,0,0,2,0,0,255,224,2,0,1,160,0,21,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,33,5,34,7,49,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,33,1,192, +27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,254,160,14,9,9,9,9,14,1,64,14,9, +9,9,9,14,254,192,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,64,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,1,0,0,255,224,2,0,0,32,0,19,0,0,55,52,55,49,54,51, +33,50,23,22,21,20,7,6,35,33,34,39,38,53,0,9,9,14,1,192,14,9,9,9,9,14,254,64,14,9,9,0, +14,9,9,9,9,14,14,9,9,9,9,14,0,3,0,0,255,192,2,0,1,192,0,28,0,50,0,69,0,0,1,35, +6,7,21,35,53,54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,53,51,54,55,53,38,39,5,54,55,49,54, +55,33,22,23,22,23,17,6,7,6,7,33,38,39,38,39,17,23,51,50,55,54,53,52,39,38,43,1,34,7,6,21, +20,23,22,51,1,176,224,15,1,64,1,22,23,34,224,34,23,22,1,1,22,23,34,16,16,15,1,1,15,254,80,1, +18,18,27,1,0,27,18,18,1,1,18,18,27,255,0,27,18,18,1,96,192,14,9,9,9,9,14,192,14,9,9,9, +9,14,1,128,1,15,16,16,34,23,22,1,1,22,23,34,224,34,23,22,1,64,1,15,224,15,1,128,27,18,18,1, +1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,2,0,0,255,224,1,192,1,160,0,21,0,47,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39, +17,54,55,54,55,33,7,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49, +1,128,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,241,47,47,14,14,17,16,47,48,17, +16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1, +64,27,18,18,1,176,47,48,17,16,15,15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0, +0,3,0,0,255,192,2,0,1,192,0,4,0,109,0,122,0,0,55,51,53,35,21,37,51,54,55,38,39,35,53,38, +39,38,39,35,53,38,39,6,7,21,35,53,38,39,6,7,21,35,53,38,39,6,7,21,35,6,7,6,7,21,35,6, +7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,22,23,22,23,51,21,22,23,54,55,53,51,21, +22,23,54,55,53,51,21,22,23,54,55,53,51,54,55,54,55,53,51,54,55,38,39,35,53,51,54,55,38,39,35,53, +7,6,7,35,38,39,53,54,55,51,22,23,21,160,192,192,1,32,48,15,1,1,15,48,1,18,18,27,16,1,15,15, +1,64,1,15,15,1,64,1,15,15,1,16,27,18,18,1,48,15,1,1,15,48,48,15,1,1,15,48,48,15,1,1, +15,48,1,18,18,27,16,1,15,15,1,64,1,15,15,1,64,1,15,15,1,16,27,18,18,1,48,15,1,1,15,48, +48,15,1,1,15,48,64,1,15,224,15,1,1,15,224,15,1,96,192,192,176,1,15,15,1,16,27,18,18,1,48,15, +1,1,15,48,48,15,1,1,15,48,48,15,1,1,15,48,1,18,18,27,16,1,15,15,1,64,1,15,15,1,64,1, +15,15,1,16,27,18,18,1,48,15,1,1,15,48,48,15,1,1,15,48,48,15,1,1,15,48,1,18,18,27,16,1, +15,15,1,64,1,15,15,1,64,192,15,1,1,15,224,15,1,1,15,224,0,1,0,31,255,192,1,224,1,192,0,154, +0,0,37,6,35,34,47,1,23,22,7,34,35,34,47,2,21,23,22,7,6,35,34,47,1,21,20,7,6,35,34,39, +38,61,1,7,6,39,38,63,1,39,15,1,6,35,34,35,38,63,1,7,6,35,34,39,38,55,54,63,1,39,38,55, +54,31,1,55,39,7,34,35,34,39,38,63,1,39,38,39,38,55,54,55,54,31,1,39,38,55,54,31,2,53,39,38, +55,54,31,1,39,52,55,54,51,50,23,22,29,1,55,54,23,22,15,1,23,63,1,54,23,22,15,1,55,54,23,22, +23,22,7,6,15,1,23,22,7,6,35,34,35,39,7,23,55,54,23,22,15,1,23,22,23,22,7,1,220,10,18,8, +8,25,5,4,21,3,3,18,5,18,60,48,14,14,7,10,9,8,14,9,9,14,14,9,9,14,17,17,14,14,48,1, +60,18,5,18,3,3,21,4,5,25,6,9,18,10,6,3,3,12,26,20,21,4,7,22,66,61,61,66,3,3,18,5, +4,21,20,26,12,3,3,6,8,12,12,12,25,5,3,19,22,8,18,59,47,14,14,17,17,14,1,9,10,13,14,9, +9,14,17,17,15,14,49,1,60,18,7,22,21,4,5,25,12,12,12,8,6,3,3,12,26,20,21,4,5,18,3,3, +67,59,60,66,22,7,4,20,21,26,12,3,3,6,64,16,4,15,20,22,8,17,67,35,70,49,17,17,7,7,14,29, +14,9,9,9,9,14,29,14,14,14,17,17,49,70,35,67,17,8,22,20,15,4,16,12,12,12,8,15,5,8,22,20, +3,18,35,35,18,17,22,8,5,15,8,12,12,12,12,3,3,6,15,20,22,8,3,20,67,35,70,49,17,17,14,14, +15,30,14,9,9,9,9,14,30,15,14,14,17,17,49,70,35,67,20,3,8,22,20,15,6,3,3,12,12,12,13,7, +15,5,8,22,17,18,35,35,18,3,20,22,8,5,15,8,12,12,12,0,0,1,0,0,255,192,2,0,1,192,0,30, +0,0,37,6,7,6,39,38,39,7,6,35,34,39,38,53,52,63,1,38,39,38,55,54,55,54,55,54,23,22,7,6, +7,1,194,20,30,27,32,23,18,232,12,16,16,12,12,12,231,14,4,2,11,12,24,53,60,60,40,37,10,9,51,206, +24,12,12,3,4,14,231,12,12,12,16,16,12,231,19,23,31,29,29,20,51,9,10,37,40,60,60,53,0,2,0,0, +255,192,1,192,1,192,0,58,0,93,0,0,19,22,7,6,7,6,7,21,20,7,6,35,34,39,38,39,53,38,39,38, +39,38,63,1,54,55,54,23,22,23,22,29,1,51,55,52,55,54,51,50,23,22,23,20,21,23,51,53,54,55,48,53, +54,55,54,23,22,31,1,19,20,7,6,35,34,39,38,61,1,35,34,39,38,39,38,39,38,61,1,54,55,54,55,54, +23,22,23,22,23,22,23,20,21,17,222,4,4,4,12,22,33,11,11,18,15,12,12,1,31,22,12,4,4,4,31,1, +5,5,6,6,4,4,18,17,4,4,4,6,4,3,1,18,16,1,3,5,6,5,6,5,2,30,226,12,12,16,16,12, +12,17,13,11,12,9,9,6,4,2,31,32,52,7,8,8,7,6,4,3,1,1,43,19,19,19,16,25,7,218,16,12, +12,12,12,16,218,6,26,15,19,20,19,137,5,4,4,1,1,4,5,6,144,148,5,4,3,3,3,4,1,1,148,144, +6,4,1,4,1,1,4,4,6,136,254,189,16,12,12,12,12,16,120,5,5,9,9,12,12,12,114,57,47,46,22,3, +1,1,5,4,7,6,6,2,1,254,72,0,0,1,0,16,255,224,1,224,1,160,0,52,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,55,54,55,54,23,22,51,54,55,54,55,38,39,38,39,6,7,23,22,7,6,7,35,38, +39,53,54,55,54,31,1,54,55,22,23,22,23,22,23,1,224,1,30,30,50,50,63,74,60,11,2,1,8,8,13,12, +11,43,53,68,45,45,2,2,45,45,68,57,44,45,12,6,7,18,146,17,2,1,16,15,14,48,62,84,63,50,50,30, +30,1,192,62,51,50,30,30,1,1,44,8,13,13,11,10,2,2,8,32,2,45,45,68,68,45,45,2,1,36,45,14, +15,16,1,2,17,146,19,6,6,12,48,54,2,1,30,30,50,51,62,0,0,5,0,0,255,192,1,192,1,192,0,26, +0,39,0,50,0,61,0,72,0,0,19,54,55,51,22,31,1,51,50,23,22,21,20,7,6,35,33,34,39,38,53,52, +55,54,59,1,55,7,33,17,6,7,6,7,33,38,39,38,39,17,23,21,22,23,54,55,53,38,39,6,7,51,21,22, +23,54,55,53,38,39,6,7,51,21,22,23,54,55,53,38,39,6,7,135,9,20,120,20,9,7,96,14,9,9,9,9, +14,254,128,14,9,9,9,9,14,96,7,104,1,129,1,18,18,27,254,255,27,18,18,1,80,2,14,15,1,1,15,14, +2,96,2,14,16,1,1,16,14,2,97,1,15,15,1,1,15,15,1,1,174,17,1,1,17,14,9,9,14,14,9,9, +9,9,14,14,9,9,14,110,254,192,27,18,18,1,1,18,18,27,1,64,80,224,15,1,1,15,224,15,1,1,15,224, +15,1,1,15,224,15,1,1,15,224,15,1,1,15,224,15,1,1,15,0,0,2,0,16,255,224,1,240,1,160,0,34, +0,70,0,0,1,7,38,39,6,7,6,7,6,23,22,23,22,55,54,55,54,55,54,55,22,23,7,6,23,22,23,51, +54,55,53,38,39,38,15,1,38,7,49,6,7,6,7,6,7,38,39,55,54,39,38,39,35,6,7,21,22,23,22,63, +1,22,23,54,55,54,55,54,39,38,39,1,194,49,60,85,72,56,55,23,4,6,5,13,13,12,11,4,17,39,39,51, +58,42,45,11,6,6,18,147,17,2,1,16,15,14,8,13,12,11,4,17,39,39,51,58,42,44,12,6,6,18,147,17, +2,1,16,15,14,49,60,84,72,56,55,24,4,6,5,13,1,152,48,54,2,1,40,41,68,13,12,11,4,4,5,6, +13,48,29,28,1,1,37,44,14,15,15,2,2,17,146,19,6,6,12,250,4,6,5,13,48,29,28,1,1,37,44,14, +15,15,2,2,17,146,19,6,6,12,48,54,2,1,40,41,68,13,12,12,3,0,0,0,0,2,0,16,255,192,1,176, +1,192,0,48,0,59,0,0,1,50,23,49,22,21,20,7,6,43,1,21,22,23,55,54,51,50,23,22,21,20,15,1, +22,23,6,7,6,7,38,39,38,39,54,55,54,55,53,35,34,39,38,53,52,55,54,59,1,7,38,39,6,7,21,22, +23,54,55,53,1,16,14,9,9,9,9,14,16,57,43,21,10,13,13,10,9,9,24,32,1,2,59,59,88,88,59,59, +2,2,49,49,76,16,14,9,9,9,9,14,96,24,2,22,22,2,2,22,22,2,1,192,9,9,14,14,9,9,34,10, +35,22,9,9,10,13,13,10,24,49,64,88,59,59,2,2,59,59,88,80,56,56,14,34,9,9,14,14,9,9,192,22, +2,2,22,128,22,2,2,22,128,0,0,0,0,2,0,0,255,224,2,0,1,160,0,38,0,66,0,0,23,51,50,55, +54,53,52,39,38,43,1,34,39,38,53,17,52,55,54,59,1,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22, +23,22,23,37,39,38,7,6,7,21,35,34,7,6,29,1,20,23,22,59,1,21,22,23,22,63,1,54,53,52,39,96, +64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,1,153, +144,12,14,14,1,128,14,9,9,9,9,14,128,1,14,14,12,144,7,7,32,9,9,14,14,9,9,9,9,14,1,0, +14,9,9,9,9,14,14,9,9,1,27,27,41,255,0,41,27,27,1,241,136,11,6,7,15,72,9,9,14,64,14,9, +9,71,15,7,6,10,136,7,10,10,7,0,0,2,0,0,255,224,2,0,1,160,0,27,0,66,0,0,37,39,38,7, +6,7,21,35,34,7,6,29,1,20,23,22,59,1,21,22,23,22,63,1,54,53,52,39,55,35,34,7,6,21,20,23, +22,59,1,50,23,22,21,17,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,17,38,39,38,39,1, +89,144,12,14,14,1,128,14,9,9,9,9,14,128,1,14,14,12,144,7,7,71,64,14,9,9,9,9,14,64,14,9, +9,9,9,14,64,14,9,9,9,9,14,64,41,27,27,1,1,27,27,41,209,136,11,6,7,15,72,9,9,14,64,14, +9,9,72,15,7,6,11,136,7,10,10,7,207,9,9,14,14,9,9,9,9,14,255,0,14,9,9,9,9,14,14,9, +9,1,27,27,41,1,0,41,27,27,1,0,0,1,0,32,255,224,1,240,1,160,0,57,0,0,1,50,23,49,22,29, +1,6,7,35,34,39,38,53,52,63,1,38,39,6,7,6,7,22,23,22,23,54,55,54,55,54,55,50,23,22,21,6, +7,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,55,54,51,1,213,11,8,8,2,17,146,12,7,8,8, +45,43,58,68,45,45,2,2,45,45,68,34,20,20,13,15,13,14,9,9,3,46,46,52,62,51,50,30,30,1,1,30, +30,50,51,62,84,62,48,9,10,1,160,8,7,12,146,18,1,8,8,11,10,9,45,36,1,2,45,45,68,68,45,45, +2,1,8,8,9,11,1,9,9,14,27,21,21,1,1,30,30,50,51,62,62,51,50,30,30,1,2,54,48,8,0,0, +0,4,0,0,255,192,2,0,1,193,0,59,0,77,0,92,0,110,0,0,37,54,55,38,39,38,39,35,54,55,38,39, +38,39,35,54,53,38,39,38,39,34,7,22,21,6,7,6,7,35,6,7,6,7,22,23,35,6,7,6,7,22,23,6, +7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,37,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55, +54,51,23,6,7,49,6,7,38,39,38,39,38,55,51,22,7,39,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,1,195,28,1,1,20,20,31,14,21,1,1,18,18,27,6,6,1,27,27,41,8,7,15,1,22,23,34,16, +27,18,18,1,1,21,14,31,20,20,1,1,28,27,17,16,1,1,20,20,31,1,112,31,20,20,1,1,16,17,27,254, +253,14,9,9,9,9,14,14,9,9,9,9,14,160,11,28,28,29,29,29,28,9,2,9,176,9,1,32,14,9,9,9, +9,14,14,9,9,9,9,14,79,21,36,31,20,20,1,18,31,27,18,17,1,15,18,41,27,27,1,2,21,25,34,23, +22,1,1,18,18,26,30,18,2,21,20,31,36,21,5,19,20,27,31,20,20,1,1,20,20,31,27,20,19,5,113,9, +9,14,14,9,9,9,9,14,14,9,9,139,22,15,15,1,1,15,15,22,9,2,2,9,75,9,9,14,14,9,9,9, +9,14,14,9,9,0,0,0,0,4,0,0,255,224,2,64,1,160,0,20,0,38,0,60,0,81,0,0,1,33,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,50,23,49,22,21,20,7,6,35,34,39,38,53,54, +55,54,51,5,6,35,33,34,39,38,63,1,54,51,50,31,1,55,54,51,50,31,1,22,15,1,33,38,39,38,39,53, +38,39,6,7,21,22,23,22,23,33,54,55,38,39,2,16,254,128,20,14,13,1,1,13,14,20,1,128,20,14,13,1, +1,13,14,20,254,207,14,9,9,9,9,14,13,10,9,1,9,9,13,1,15,5,9,254,224,10,4,4,5,70,5,8, +8,5,22,63,4,9,9,5,106,5,4,38,254,176,31,20,20,1,2,22,22,2,1,34,34,51,1,80,22,2,2,22, +1,160,1,13,14,20,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,64,9,9,14,14,9,9,9,9,14, +14,9,9,216,8,9,8,8,96,7,7,30,94,7,7,160,8,9,120,1,20,20,31,240,22,2,2,22,240,51,34,34, +1,2,22,22,2,0,0,0,0,2,0,0,255,192,1,255,1,191,0,27,0,41,0,0,37,7,39,55,35,38,39,53, +7,6,15,1,55,54,55,23,6,15,1,6,39,38,63,1,54,63,1,23,55,22,21,49,20,15,1,39,55,54,51,50, +31,1,1,166,233,34,3,46,15,1,3,8,3,23,79,9,8,34,16,22,120,14,10,10,4,35,7,16,233,130,71,18, +18,49,130,49,19,26,26,19,40,228,233,33,4,1,15,46,3,8,9,79,23,3,7,33,16,7,35,4,11,9,14,120, +22,15,234,130,161,19,26,26,19,49,130,49,18,18,40,0,0,2,0,0,255,192,1,255,1,191,0,13,0,27,0,0, +1,54,51,49,50,31,1,22,21,20,15,1,39,55,23,7,6,15,1,6,39,38,63,1,54,63,1,23,1,107,19,26, +26,19,40,18,18,49,130,49,59,233,16,22,120,14,10,10,4,35,7,16,233,130,1,173,18,18,40,19,26,26,19,49, +130,49,201,233,16,7,35,4,11,9,14,120,22,15,234,130,0,2,0,0,255,192,1,255,1,191,0,13,0,40,0,0, +1,22,21,49,20,15,1,39,55,54,51,50,31,1,7,38,15,1,6,39,38,63,1,54,51,50,31,1,7,6,15,1, +6,39,38,63,1,54,63,1,39,1,237,18,18,52,130,52,19,26,26,19,40,253,16,17,103,16,17,14,14,102,22,29, +29,22,143,188,74,102,25,13,9,9,2,5,21,74,154,14,1,133,19,26,26,19,52,130,52,18,18,40,56,14,14,101, +15,15,16,17,102,21,21,143,189,73,21,5,2,10,8,13,25,102,73,155,13,0,0,0,0,1,0,31,255,192,1,32, +1,192,0,26,0,0,37,7,6,35,34,47,1,38,55,54,55,51,17,52,55,54,51,50,23,22,21,17,51,22,23,22, +7,1,26,104,8,10,10,8,104,10,6,7,14,73,9,9,14,14,9,9,72,15,7,6,10,56,112,8,8,112,11,15, +13,1,1,64,14,9,9,9,9,14,254,192,1,13,15,11,0,1,0,0,0,63,2,0,1,64,0,27,0,0,37,20, +7,49,6,35,33,21,6,7,6,47,1,38,53,52,63,1,54,23,22,23,21,33,50,23,22,21,2,0,9,9,14,254, +192,1,13,15,11,112,8,8,112,11,15,13,1,1,64,14,9,9,192,14,9,9,72,15,7,6,10,104,8,10,10,8, +104,10,6,7,14,73,9,9,14,0,0,0,0,1,0,0,0,63,2,0,1,64,0,24,0,0,37,7,6,39,38,61, +1,33,34,39,38,53,54,55,33,53,54,55,54,31,1,22,21,20,7,1,248,112,11,15,14,254,192,14,9,9,3,29, +1,64,1,13,15,11,112,8,8,174,104,10,6,7,14,73,9,10,14,29,2,72,15,7,6,10,104,8,10,10,8,0, +0,1,0,31,255,192,1,31,1,192,0,26,0,0,1,6,7,35,17,20,7,6,35,34,39,38,53,17,35,38,39,38, +63,1,54,51,50,31,1,22,7,1,29,7,14,72,9,9,14,14,9,9,73,15,7,5,10,104,7,10,10,8,104,11, +7,1,46,13,1,254,192,14,9,9,9,9,14,1,64,1,13,15,11,112,8,8,112,11,15,0,0,0,0,4,0,0, +255,192,2,64,1,192,0,25,0,29,0,43,0,58,0,0,19,54,55,49,54,55,51,21,20,23,22,59,1,21,7,6, +15,1,6,23,35,38,39,38,39,17,5,53,23,35,5,22,21,49,20,15,1,39,55,54,51,50,31,1,7,55,23,7, +6,15,1,6,39,38,63,1,54,55,49,0,1,18,18,27,160,9,9,14,128,95,12,4,16,3,5,195,27,18,18,1, +1,0,128,128,1,52,12,12,29,71,29,13,15,16,13,14,252,129,71,129,6,9,60,9,6,6,2,15,2,6,1,128, +27,18,18,1,128,14,9,9,140,94,13,17,60,15,13,1,18,18,27,1,128,64,128,128,122,12,16,16,13,29,71,29, +12,12,14,166,128,71,129,6,2,15,2,6,6,10,59,8,8,0,0,0,0,1,0,0,255,225,1,191,1,160,0,70, +0,0,37,21,6,7,35,38,39,38,63,1,39,7,23,22,7,6,43,1,38,39,53,54,55,54,51,50,31,1,55,39, +7,6,39,38,39,53,54,55,51,22,23,22,7,48,49,20,15,1,23,55,39,38,55,54,55,51,22,23,21,6,7,6, +47,1,7,23,55,54,23,22,21,1,191,2,21,135,21,9,7,14,30,72,71,30,14,7,9,21,136,21,2,1,19,5, +6,13,10,30,71,71,30,16,19,19,1,2,21,135,21,9,4,1,9,29,71,71,30,14,7,9,21,135,22,1,1,19, +18,16,30,72,72,30,15,19,21,129,135,22,1,1,18,19,16,30,69,71,30,16,19,19,2,21,135,21,9,3,9,30, +71,71,30,14,7,9,22,135,21,2,1,19,5,5,13,10,31,71,71,30,16,19,19,1,2,21,135,21,9,7,14,30, +71,72,30,14,7,11,19,0,0,3,0,0,255,192,1,128,1,192,0,29,0,47,0,58,0,0,1,35,38,39,38,39, +6,7,6,7,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7, +6,35,34,39,38,53,52,55,54,51,23,35,38,39,54,55,51,22,23,6,7,1,80,54,10,24,24,32,32,24,24,10, +54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,144,14,9,9,9,9,14,14,9,9,9,9,14, +80,160,15,1,1,15,160,15,1,1,15,1,128,28,18,17,1,1,17,18,28,1,13,14,20,254,160,20,14,13,1,1, +13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,160,1,15,15,1,1,15,15,1,0,0, +0,1,255,255,0,63,1,255,1,64,0,34,0,0,37,7,6,39,38,61,1,35,21,6,7,6,47,1,38,53,52,63, +1,54,23,22,23,21,51,53,52,55,54,31,1,22,21,20,7,1,247,112,12,14,14,192,1,14,14,12,112,7,7,112, +12,14,15,1,192,14,14,12,112,7,8,174,104,10,6,7,15,56,56,15,7,6,10,104,8,10,10,8,104,10,6,7, +15,55,56,15,7,5,10,104,7,11,10,8,0,1,0,0,255,192,1,0,1,192,0,34,0,0,55,7,6,35,34,47, +1,38,55,54,55,51,53,35,38,39,38,63,1,54,51,50,31,1,22,7,6,7,35,21,51,22,23,22,7,250,104,8, +10,10,8,103,10,6,6,15,56,56,15,7,6,10,104,8,10,10,8,104,10,6,7,15,56,56,15,7,6,10,56,112, +8,8,112,11,15,13,1,192,1,13,15,11,112,8,8,112,11,15,13,1,192,1,13,15,11,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,26,0,52,0,0,5,54,55,49,54,55,49,54,55,38,39,38,39,38,39,6,7,6,7,6, +7,22,23,22,23,22,23,39,54,59,1,53,52,55,54,59,1,50,23,22,29,1,51,50,23,22,15,1,6,47,1,38, +55,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,127,5,10,64,9, +9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3,64,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,246,10,96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,55,22,23,49,22,23,49,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,6,7,6,7,6,7,55,22,29,1,51,50,23,22,29,1,20,7,6,43,1,21,20,7,6,47,1, +38,63,1,54,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,10, +96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,37,38,39,49,38,39,49,38,39,6,7,6,7,6,7,22, +23,22,23,22,23,54,55,54,55,54,55,7,38,61,1,35,34,39,38,61,1,52,55,54,59,1,53,52,55,54,31,1, +22,15,1,6,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246, +10,96,14,9,9,9,9,14,96,10,10,7,112,10,10,112,7,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7, +3,0,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,1,6,7,49,6,7,49,6,7,22,23,22, +23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,23,6,43,1,21,20,7,6,43,1,34,39,38,61,1,35,34, +39,38,63,1,54,31,1,22,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,127,5,10,64,9,9,14,32,14,9,9,64,10,5,3,7,112,11,11,112,7,3,1,192,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,10,96,14,9,9,9,9,14,96,10,10,7, +112,10,10,112,7,10,0,0,0,2,0,0,255,192,2,0,1,192,0,37,0,62,0,0,37,34,7,49,6,29,1,33, +17,51,50,55,54,53,52,39,38,43,1,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,52,39,38,35,19,35, +6,7,6,31,1,7,6,21,20,23,22,51,50,63,1,23,22,55,54,55,53,38,39,1,128,14,9,9,254,224,96,14, +9,9,9,9,14,96,27,18,18,1,1,18,18,27,1,32,27,18,18,1,9,9,14,104,136,21,9,7,14,42,202,9, +9,10,13,13,10,201,41,16,19,19,1,2,22,128,9,9,14,96,1,32,9,9,14,14,9,9,1,18,18,27,254,224, +27,18,18,1,1,18,18,27,96,14,9,9,1,64,1,19,19,16,41,201,10,13,13,10,9,9,202,42,14,7,9,21, +136,22,2,0,0,2,0,0,255,224,1,192,1,160,0,20,0,46,0,0,1,33,6,7,6,7,17,22,23,22,23,33, +54,55,54,55,17,38,39,38,39,3,6,7,6,47,1,7,6,35,34,47,1,38,53,52,63,1,39,38,55,54,59,1, +22,23,21,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,53,1,9,10,8,45,68, +10,13,12,10,23,9,9,68,45,7,3,5,10,158,15,1,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,254,220,10,5,3,7,45,68,9,9,23,10,13,12,11,68,44,8,10,9,1,14,159,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,53,0,0,19,33,21,22,23,22,63,1,54,53,52,47,1,38,7,6, +7,21,33,34,7,6,21,20,23,22,51,5,33,53,38,39,38,15,1,6,21,20,31,1,22,55,54,55,53,33,50,55, +54,53,52,39,38,35,32,1,64,1,13,15,11,112,8,8,112,11,15,13,1,254,192,14,9,9,9,9,14,1,192,254, +192,1,13,15,11,112,8,8,112,11,15,13,1,1,64,14,9,9,9,9,14,1,32,72,15,7,6,10,104,8,10,10, +8,104,10,6,7,15,72,9,9,13,13,10,10,192,73,15,7,4,9,104,8,10,10,8,104,10,6,7,15,72,9,9, +14,14,9,9,0,2,0,0,255,192,2,0,1,192,0,37,0,74,0,0,37,34,7,49,6,21,6,7,6,7,35,53, +38,39,38,15,1,6,21,20,31,1,22,51,50,55,54,55,53,51,54,55,54,55,52,39,38,35,37,51,23,22,23,22, +51,50,63,1,54,53,52,47,1,38,7,6,7,23,35,6,7,6,7,20,23,22,51,50,55,54,53,54,55,54,55,1, +224,14,9,9,1,27,27,41,160,1,13,14,12,80,8,8,80,7,9,5,5,13,1,160,68,45,45,2,9,9,14,254, +192,159,1,1,13,5,4,9,7,80,9,8,80,12,14,14,1,1,160,68,45,45,2,9,9,14,14,9,9,1,27,27, +41,192,9,9,14,41,27,27,1,40,15,7,5,9,72,7,11,11,7,72,6,2,7,15,40,2,45,45,68,14,9,9, +128,40,15,7,2,6,72,7,12,11,7,72,9,5,8,15,40,2,45,45,68,14,9,9,9,9,14,41,27,27,1,0, +0,2,0,0,0,32,2,128,1,96,0,37,0,55,0,0,37,6,7,49,6,7,38,39,38,39,35,34,39,38,53,52, +55,54,59,1,54,55,54,55,22,23,22,23,51,50,23,22,21,20,7,6,43,1,7,54,55,49,54,55,38,39,38,39, +6,7,6,7,22,23,22,23,1,221,13,42,43,59,59,43,43,12,131,14,9,9,9,9,14,131,12,43,43,59,59,43, +42,13,131,14,9,9,9,9,14,131,157,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,160,56,35,36,1, +1,36,35,56,9,9,14,14,9,9,56,36,35,1,1,35,36,56,9,9,14,14,9,9,48,1,22,23,34,34,23,22, +1,1,22,23,34,34,23,22,1,0,0,0,0,4,0,0,255,192,1,192,1,192,0,59,0,72,0,81,0,95,0,0, +55,51,54,55,54,55,22,23,22,23,6,7,6,7,34,39,38,39,35,34,39,21,22,23,22,21,6,7,6,7,38,39, +38,39,52,55,54,55,53,38,39,38,53,54,55,54,55,22,23,22,23,20,7,6,7,22,23,22,23,53,39,54,55,52, +39,38,35,34,7,6,21,22,23,17,54,55,38,39,6,7,22,23,37,34,7,49,6,21,22,23,54,55,52,39,38,35, +208,87,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,87,56,40,22,13,13,1,22,23,34,34,23,22,1, +13,13,22,22,13,13,1,22,23,34,34,23,22,1,13,13,22,5,26,27,38,128,22,2,7,7,10,10,7,7,2,22, +22,2,2,22,22,2,2,22,1,32,10,7,7,2,22,22,2,7,7,10,209,21,13,13,1,1,23,23,33,35,22,23, +1,13,14,22,31,87,9,20,19,25,34,23,22,1,1,22,23,34,25,19,20,9,206,10,19,19,25,34,23,22,1,1, +22,23,34,25,19,19,10,38,24,24,1,1,136,1,23,10,7,7,7,7,10,23,1,254,159,2,22,22,2,2,22,22, +2,209,7,7,10,23,1,1,23,10,7,7,0,2,0,0,255,192,2,64,1,192,0,34,0,39,0,0,1,33,6,7, +6,7,17,22,23,22,23,51,7,35,6,7,22,23,33,54,55,38,39,35,39,51,54,55,54,55,17,38,39,38,39,3, +33,53,33,21,2,16,254,32,20,14,13,1,1,13,14,20,192,16,72,22,2,2,22,1,16,22,2,2,22,72,16,192, +20,14,13,1,1,13,14,20,16,254,64,1,192,1,192,1,13,14,20,254,192,20,14,13,1,48,2,22,22,2,2,22, +22,2,48,1,13,14,20,1,64,20,14,13,1,254,224,224,224,0,0,0,0,4,0,0,255,224,2,0,1,160,0,3, +0,7,0,11,0,19,0,0,1,35,23,55,23,39,7,51,37,7,51,39,19,22,51,50,63,1,33,23,1,123,246,123, +123,133,107,115,222,254,107,107,222,115,137,5,7,7,5,243,254,2,243,1,160,151,151,160,141,141,141,141,141,254,88,5, +5,251,251,0,0,1,0,0,255,192,1,64,1,192,0,34,0,0,37,7,6,35,34,47,1,38,55,54,55,51,17,38, +39,35,34,39,38,53,52,55,54,59,1,22,23,22,23,17,51,22,23,22,7,1,58,104,8,10,10,8,104,10,6,7, +15,72,1,15,112,14,9,9,9,9,14,112,34,23,22,1,72,15,7,6,10,56,112,8,8,112,11,15,13,1,1,16, +15,1,9,9,14,14,9,9,1,22,23,34,254,240,1,13,15,11,0,0,0,1,0,0,255,192,1,64,1,192,0,34, +0,0,1,6,7,35,17,6,7,6,7,35,34,39,38,53,52,55,54,59,1,54,55,17,39,38,39,38,63,1,54,51, +50,31,1,22,7,1,62,7,15,72,1,22,23,34,112,14,9,9,9,9,14,112,15,1,72,15,7,6,10,104,8,10, +10,8,104,10,6,1,46,13,1,254,240,34,23,22,1,9,9,14,14,9,9,1,15,1,16,1,1,13,14,11,112,8, +8,112,11,15,0,1,0,0,255,192,2,64,1,192,0,49,0,0,1,51,22,23,22,23,21,6,7,6,7,33,38,39, +38,39,53,54,55,54,55,51,53,54,55,54,55,22,23,22,23,21,20,7,6,35,34,39,38,61,1,38,39,38,39,6, +7,6,7,21,1,96,32,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,224,2,40,41,61,61,41, +40,2,9,9,14,14,9,9,1,22,23,34,34,23,22,1,1,0,1,18,18,27,192,27,18,18,1,1,18,18,27,192, +27,18,18,1,48,61,41,40,2,2,40,41,61,48,14,9,9,9,9,14,48,34,23,22,1,1,22,23,34,48,0,0, +0,2,0,0,255,193,1,128,1,192,0,27,0,45,0,0,23,38,39,49,38,39,49,38,39,54,55,54,55,22,23,22, +23,6,7,6,7,6,7,6,35,34,39,49,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,168,27, +40,39,30,30,2,2,54,54,82,82,54,54,2,2,30,31,39,39,27,10,14,14,10,24,27,18,18,1,1,18,18,27, +27,18,18,1,1,18,18,27,51,33,56,55,59,59,45,82,54,54,2,2,54,54,82,45,59,59,55,56,33,12,12,243, +1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,2,0,16,255,192,1,112,1,192,0,38,0,84,0,0, +55,54,55,49,54,55,35,38,39,54,55,51,53,35,38,39,54,55,51,53,35,38,39,54,55,23,38,39,38,39,6,7, +6,7,21,22,23,22,23,55,6,7,21,6,7,6,39,38,39,38,39,53,38,39,6,7,21,22,23,22,23,21,35,34, +7,6,21,22,23,51,54,55,52,39,38,43,1,53,54,55,54,55,53,38,39,192,41,27,27,1,80,15,1,1,15,80, +80,15,1,1,15,80,80,15,1,1,15,80,1,27,27,41,41,27,27,1,1,27,27,41,152,22,2,2,38,39,57,51, +34,34,1,2,22,22,2,1,42,42,67,40,14,9,9,2,14,160,14,2,9,9,14,40,66,42,43,1,2,22,96,1, +27,27,41,1,15,15,1,32,1,15,15,1,33,1,15,15,1,1,41,27,27,1,1,27,27,41,160,41,27,27,1,160, +2,21,41,57,36,37,2,5,38,39,51,36,21,2,2,21,32,69,51,51,11,35,10,9,15,13,1,1,13,15,9,10, +34,10,48,48,68,41,21,2,0,3,0,16,255,192,1,112,1,192,0,20,0,38,0,43,0,0,1,35,6,7,6,7, +17,22,23,22,23,51,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,19,17,35,17,51,1,48,224,27,18,18,1,1,18,18,27,224,27,18,18,1,1,18,18,27,112,14,9,9,9,9, +14,14,9,9,9,9,14,112,224,224,1,192,1,18,18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1, +254,32,9,9,14,14,9,9,9,9,14,14,9,9,1,160,254,192,1,64,0,2,0,16,255,192,1,112,1,192,0,20, +0,31,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,54, +55,51,22,23,1,64,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,80,1,15,65,13,2, +1,15,64,15,1,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,65,16,1,1, +15,15,1,2,13,0,0,0,0,3,0,16,255,192,1,112,1,192,0,20,0,31,0,36,0,0,1,33,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,6,7,35,38,39,54,55,51,22,23,55,35,17,51,17,1, +64,255,0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,80,1,15,65,13,2,1,15,64,15,1, +64,224,224,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,254,65,16,1,1,15,15, +1,2,13,63,1,64,254,192,0,7,0,0,0,0,2,64,1,128,0,20,0,42,0,50,0,58,0,65,0,72,0,90, +0,0,55,54,55,51,22,23,21,51,22,23,6,7,35,38,39,54,55,51,53,38,39,37,22,23,49,22,23,17,6,7, +6,7,33,38,39,38,39,17,54,55,54,55,33,1,38,39,49,38,39,21,51,39,54,55,49,54,55,35,21,5,53,6, +7,6,7,51,17,35,22,23,22,23,53,7,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,252,1,19, +16,18,2,4,18,2,2,18,48,19,1,1,19,4,15,1,1,4,27,18,18,1,1,18,18,27,254,64,27,18,18,1, +1,18,18,27,1,192,254,128,1,18,18,27,64,64,27,18,18,1,64,1,192,27,18,18,1,64,64,1,18,18,27,224, +48,31,32,1,1,32,31,48,48,31,32,1,1,32,31,48,240,19,1,1,19,68,1,19,18,2,2,18,19,1,48,4, +16,144,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,254,192,27,18,18,1,64,192,1,18, +18,27,64,192,64,1,18,18,27,1,0,27,18,18,1,64,16,1,32,31,48,48,31,32,1,1,32,31,48,48,31,32, +1,0,0,0,0,2,0,0,255,192,2,127,1,192,0,16,0,45,0,0,37,39,38,15,1,6,31,1,22,23,50,55, +54,55,39,6,7,5,39,54,55,54,55,38,47,1,38,15,1,6,31,1,6,7,1,38,35,34,7,6,23,1,22,55, +54,39,1,15,43,15,22,108,22,4,23,7,24,80,73,72,59,89,20,23,1,104,160,49,28,27,1,2,22,101,24,12, +46,8,17,53,18,27,254,165,7,8,11,8,12,16,2,79,19,15,13,16,80,54,17,8,46,12,24,101,23,1,27,26, +47,69,14,11,101,125,60,73,74,82,24,7,23,4,22,108,22,15,44,37,32,1,16,5,9,19,15,254,49,12,16,17, +16,0,0,0,0,3,0,0,255,192,1,128,1,192,0,20,0,38,0,53,0,0,1,33,6,7,6,7,17,22,23,22, +23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38, +39,54,55,54,55,51,22,23,22,23,6,7,1,80,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,144,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,22,23,34,64,34,23,22,1, +1,15,1,192,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,20,14,13,1,128,1,18,18,27,27,18,18, +1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,0,0,1,0,0,255,225,2,0, +1,159,0,34,0,0,19,55,54,23,22,23,21,50,23,22,23,22,23,6,7,6,7,6,39,38,55,54,39,38,35,21, +6,7,6,47,1,38,53,52,55,8,176,13,13,13,1,81,65,65,38,38,1,1,24,24,34,12,9,10,3,33,47,46, +117,1,13,13,13,176,8,8,1,2,151,10,6,6,16,80,15,15,40,40,75,47,41,42,24,7,6,7,12,107,40,39, +88,16,6,6,10,151,8,11,11,7,0,0,0,2,0,15,255,195,1,240,1,192,0,29,0,40,0,0,1,50,31,1, +22,23,22,21,22,7,6,7,6,7,6,39,38,39,38,39,38,53,54,55,54,63,1,54,51,49,17,54,55,49,54,55, +49,54,53,39,17,1,0,7,6,189,17,10,11,1,18,18,47,46,86,26,26,86,46,47,18,18,1,11,10,17,189,6, +7,68,38,39,15,16,176,1,192,3,80,7,15,15,19,52,69,68,66,66,43,12,12,43,66,66,68,69,52,19,15,15, +7,80,3,254,67,35,54,54,57,58,46,74,254,134,0,0,0,3,0,0,255,193,1,192,1,192,0,20,0,38,0,43, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,33,17,33,17,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1, +1,18,18,27,160,14,9,9,9,9,14,14,9,9,9,9,14,160,254,192,1,64,1,192,1,18,18,27,254,128,27,18, +17,1,1,18,17,27,1,128,27,18,18,1,254,32,9,9,14,14,9,9,9,9,14,14,9,9,96,1,64,254,192,0, +0,2,0,0,255,192,1,192,1,192,0,20,0,31,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,3,6,7,35,38,39,54,55,51,22,23,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18, +18,1,1,18,18,27,96,1,15,97,13,2,2,13,96,16,1,1,192,1,18,18,27,254,128,27,18,18,1,1,18,18, +27,1,128,27,18,18,1,254,65,16,1,1,15,15,1,2,13,0,0,0,0,1,0,0,0,0,2,64,1,128,0,39, +0,0,19,54,55,49,54,55,33,22,23,22,23,21,6,7,6,7,22,23,22,23,21,6,7,6,7,33,38,39,38,39, +53,54,55,54,55,38,39,38,39,53,0,1,18,18,27,1,192,27,18,18,1,20,14,13,1,1,13,14,20,1,18,18, +27,254,64,27,18,18,1,20,14,13,1,1,13,14,20,1,64,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14, +13,1,80,27,18,18,1,1,18,18,27,80,1,13,14,20,20,14,13,1,80,0,0,0,0,2,0,0,255,192,1,255, +1,192,0,17,0,36,0,0,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7, +20,23,22,51,33,50,55,54,53,38,39,38,39,1,0,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,95, +191,68,45,45,2,9,9,13,1,193,14,8,9,1,45,45,69,160,2,40,41,61,61,41,40,2,2,40,41,61,61,41, +40,2,32,2,45,45,68,14,9,9,9,9,14,68,45,45,2,0,0,0,0,2,0,0,255,224,2,0,1,160,0,21, +0,47,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,23,7,6,23,22, +63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,1,192,27,18,18,1,1,18,18,27,254,128, +27,18,18,1,1,18,18,27,1,128,254,239,47,47,14,14,17,16,47,48,17,16,15,15,46,46,15,15,16,17,48,47, +16,17,14,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,176,47,48,17,16,15, +15,46,46,15,15,16,17,48,47,16,17,14,14,47,47,14,14,17,16,0,0,2,0,0,255,192,2,0,1,192,0,27, +0,53,0,0,55,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,51,50,55,54,55,53,38,39, +55,51,54,55,54,47,1,55,54,53,52,47,1,38,35,34,15,1,39,38,7,6,7,21,22,23,215,136,21,8,6,13, +30,78,9,9,23,10,13,12,10,78,30,10,13,6,6,19,1,2,23,81,136,21,9,7,14,30,78,9,9,23,10,13, +12,10,78,30,16,19,19,1,2,22,176,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,9,2,9,21,136,22, +2,32,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,14,7,9,21,135,23,2,0,2,0,0,255,192,2,0, +1,192,0,28,0,54,0,0,55,38,35,49,34,15,1,39,38,35,34,7,6,7,21,22,23,51,54,55,54,47,1,55, +54,53,52,47,1,1,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,55,54,55,53,38,39,208, +10,13,12,10,78,30,10,13,6,6,19,1,2,22,136,21,9,7,14,30,78,9,9,23,1,23,136,21,8,8,14,31, +79,9,9,23,10,13,12,10,78,30,16,19,20,1,2,23,167,9,9,78,30,9,2,9,21,135,23,2,1,19,19,16, +30,78,10,12,13,10,23,1,25,1,19,19,16,30,78,10,12,13,10,23,9,9,78,30,14,7,9,22,136,21,2,0, +0,3,0,0,255,192,2,128,1,192,0,18,0,36,0,57,0,0,55,38,35,6,7,6,21,20,31,1,22,51,54,55, +54,53,52,47,1,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,52,47,1,38,35,34,15,1, +6,7,6,7,23,54,55,54,63,1,54,53,58,10,16,17,8,7,6,47,10,16,17,7,8,7,46,1,182,34,22,23, +1,1,23,22,34,34,23,22,1,1,22,23,34,144,13,23,22,32,22,18,202,69,56,36,67,56,83,44,79,68,203,27, +51,13,1,11,11,9,10,9,64,13,1,11,11,9,10,9,64,45,1,22,23,34,34,23,22,1,1,22,23,34,34,23, +22,1,253,21,18,32,28,13,147,50,63,44,56,78,52,16,33,49,147,22,33,0,0,0,0,3,0,0,255,192,2,0, +1,192,0,101,0,124,0,145,0,0,37,52,55,49,54,59,1,50,23,52,53,52,53,38,39,38,39,38,39,34,35,34, +35,22,21,20,7,6,7,34,39,38,39,52,53,54,53,52,39,6,7,6,7,22,51,50,55,50,51,50,23,22,21,20, +7,6,39,35,34,39,48,21,20,21,22,23,22,23,22,23,50,51,50,51,38,53,52,55,54,51,22,23,20,7,20,21, +20,23,54,55,54,55,38,35,34,7,34,35,34,39,38,53,39,6,7,49,6,7,49,6,7,38,39,52,55,54,55,54, +55,54,55,22,23,22,21,23,6,7,6,7,6,7,6,7,38,39,38,53,54,55,54,55,54,55,22,23,1,174,9,10, +11,3,25,24,1,34,34,58,57,72,2,2,1,1,6,1,2,14,5,5,5,1,1,6,85,58,58,14,22,23,10,4, +2,1,5,6,5,9,10,10,4,24,24,1,34,34,58,57,72,2,1,2,1,6,1,2,14,13,3,1,6,85,58,58, +14,22,23,11,4,2,1,3,6,7,192,1,20,20,26,25,16,15,1,9,36,17,17,8,9,12,9,4,3,160,1,9, +35,17,17,8,10,12,9,3,4,2,20,20,25,25,17,14,2,175,12,3,2,6,2,1,2,1,72,57,58,34,34,1, +24,24,9,9,13,2,4,4,8,1,2,4,10,23,22,14,58,59,84,6,1,4,4,8,12,3,3,1,6,1,3,2, +72,57,58,34,34,1,24,24,8,9,14,1,14,2,1,4,9,23,22,14,58,58,85,6,1,3,3,10,144,15,25,26, +20,21,1,1,15,10,4,19,20,20,15,20,1,1,6,6,4,162,9,5,18,20,20,16,20,1,1,5,6,4,15,26, +25,21,21,1,1,15,0,0,0,8,0,0,255,192,2,0,1,192,0,7,0,18,0,26,0,37,0,50,0,58,0,71, +0,79,0,0,19,39,6,7,22,51,54,55,31,1,55,38,39,34,7,22,21,6,7,55,52,39,6,7,23,54,55,7, +6,7,34,39,6,21,22,23,55,39,23,39,7,22,23,22,51,50,55,38,53,54,55,31,1,54,55,38,35,6,7,55, +7,23,54,55,50,23,54,53,52,39,38,39,3,20,23,54,55,39,6,7,149,85,43,15,20,22,58,43,46,61,169,70, +99,11,12,7,2,43,13,6,67,48,84,36,1,36,52,72,24,23,1,2,62,169,61,146,62,169,33,44,43,49,11,11, +6,2,44,45,85,43,15,20,22,58,43,85,169,61,52,72,24,23,1,17,17,30,144,6,66,49,84,36,1,1,21,84, +49,66,6,1,36,1,61,169,62,2,1,23,24,72,52,124,22,20,15,43,85,43,58,147,43,2,6,11,11,99,70,169, +61,145,61,169,30,17,17,1,23,24,72,52,1,84,49,66,6,1,36,254,169,62,44,2,6,11,11,49,43,44,33,254, +135,22,20,15,43,85,43,58,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,7,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55,54,51,21,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,112,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9, +14,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,208,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9, +9,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,0,1,192,0,53,0,86,0,94, +0,115,0,136,0,0,55,35,6,7,21,22,23,51,20,7,51,38,53,51,54,63,1,38,39,35,55,52,53,48,53,38, +39,35,53,51,54,55,38,39,35,53,38,39,6,7,21,35,6,7,22,23,51,21,35,6,7,20,31,1,5,7,51,39, +55,54,61,1,52,43,1,34,29,1,35,53,54,43,1,34,7,21,35,53,52,43,1,34,29,1,20,31,2,54,55,22, +23,21,35,53,7,39,53,38,39,35,6,7,21,7,6,29,1,22,23,51,54,55,53,52,39,33,39,53,38,39,35,6, +7,21,7,6,29,1,22,23,51,54,55,53,52,39,74,10,15,1,2,13,16,16,128,16,15,15,1,2,2,13,10,34, +2,14,57,16,15,1,1,15,16,1,15,15,1,16,15,1,1,15,16,57,14,2,1,34,1,10,3,126,3,25,11,7, +26,6,25,1,6,54,5,1,25,6,26,6,11,25,44,1,15,15,1,32,137,23,1,15,160,15,1,23,9,1,15,224, +15,1,9,1,0,23,1,15,128,15,1,23,9,1,15,192,15,1,9,240,1,15,16,15,1,65,63,63,65,1,15,16, +15,1,90,2,3,1,15,1,32,1,15,15,1,16,15,1,1,15,16,1,15,15,1,32,1,15,3,3,90,94,82,82, +21,10,14,59,6,6,26,26,6,6,26,26,6,6,59,14,10,21,2,15,1,1,15,32,32,156,12,16,15,1,1,15, +16,12,4,10,22,15,1,1,15,22,10,4,12,16,15,1,1,15,16,12,4,10,22,15,1,1,15,22,10,4,0,0, +0,2,0,0,255,192,1,64,1,192,0,14,0,61,0,0,37,35,6,7,6,7,22,23,33,54,55,38,39,38,39,37, +20,23,49,22,23,21,51,53,54,55,54,53,38,39,7,6,35,34,47,1,38,53,52,63,1,38,39,54,55,52,39,38, +43,1,34,7,6,21,22,23,6,7,6,7,6,7,1,16,224,20,14,13,1,1,15,1,32,15,1,1,13,14,20,254, +248,15,15,26,192,26,15,15,1,26,100,2,4,3,2,12,2,2,108,32,39,23,2,9,9,14,64,14,9,9,2,23, +27,26,26,17,16,1,0,1,13,14,20,15,1,1,15,20,14,13,1,160,38,20,19,8,43,43,8,19,20,38,48,55, +101,2,2,12,2,3,4,2,108,59,33,7,24,14,9,9,9,9,14,24,7,23,38,39,44,43,38,0,0,6,0,0, +255,224,1,192,1,160,0,4,0,25,0,62,0,67,0,72,0,77,0,0,55,35,21,51,53,55,33,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,38,39,38,39,21,35,21,51,21,35,21,51,21,35,53,35,21,35,53,35,21,35, +53,51,53,35,53,51,53,35,53,51,21,51,53,51,21,51,53,51,21,7,21,51,53,35,55,53,35,21,51,21,51,53, +35,21,192,64,64,192,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,192,64,64,64,64,64,64,64,224,64,64,192,1,18,18,27,254,192,27,18, +18,1,1,18,18,27,1,64,27,18,18,1,128,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,128, +64,64,64,64,64,64,64,64,0,2,0,0,255,192,1,192,1,192,0,14,0,64,0,0,37,33,6,7,6,21,22,23, +33,54,55,52,39,38,39,19,35,53,51,50,55,54,53,38,39,38,43,1,53,52,39,38,35,34,7,6,7,21,35,34, +7,6,21,22,23,22,59,1,21,35,34,7,6,7,20,31,1,33,55,54,53,38,39,38,35,1,111,254,225,20,14,14, +1,15,1,96,15,1,14,14,21,49,160,16,14,9,9,1,9,9,13,16,10,9,14,13,9,9,1,16,13,10,9,1, +9,9,13,16,160,11,10,9,1,1,73,1,44,73,1,1,10,10,11,0,1,13,13,20,16,1,1,15,20,14,13,1, +1,32,48,9,9,14,14,9,9,16,14,9,9,9,9,14,16,9,9,14,14,9,9,48,8,9,15,5,5,214,214,5, +5,15,9,8,0,3,0,0,255,192,1,128,1,160,0,39,0,48,0,63,0,0,55,23,22,51,50,63,1,54,63,1, +54,63,1,21,6,15,1,6,7,6,29,1,33,53,38,39,38,39,35,6,7,20,31,1,7,6,29,1,22,23,55,22, +23,6,7,38,39,54,55,1,33,6,7,6,7,22,23,33,54,55,38,39,38,39,19,41,6,7,6,6,12,14,5,9, +3,10,22,1,26,57,20,12,12,1,64,2,54,54,82,148,11,1,2,14,9,7,1,18,33,18,2,2,18,18,2,2, +18,1,28,254,223,20,13,13,1,1,15,1,96,15,1,1,13,14,20,175,18,2,2,5,6,15,30,11,5,11,50,29, +14,29,10,19,19,24,14,192,81,54,55,2,1,11,4,4,28,9,7,10,137,21,9,145,2,18,18,2,2,18,18,2, +254,192,1,13,13,20,16,1,1,15,20,14,13,1,0,0,0,2,0,0,255,192,1,64,1,160,0,37,0,52,0,0, +55,35,6,7,21,22,31,1,21,22,7,51,38,55,53,51,54,55,53,38,39,35,54,55,54,53,38,39,38,39,6,7, +6,7,20,23,22,31,1,35,6,7,6,7,22,23,33,54,55,38,39,38,39,105,25,15,1,1,15,16,3,27,176,27, +3,16,15,1,1,15,25,22,13,14,1,30,29,45,45,28,29,1,14,13,22,167,225,20,13,13,1,1,15,1,32,15, +1,1,13,14,20,224,1,15,32,14,1,1,6,67,55,55,67,6,2,13,32,16,1,14,23,23,28,44,30,29,1,1, +29,30,44,28,23,23,14,224,1,13,13,20,16,1,1,15,20,14,13,1,0,3,0,0,255,192,1,255,1,192,0,17, +0,32,0,90,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,19,33,6,7,6,7,22,23, +33,54,55,38,39,38,39,55,52,47,1,38,35,6,7,6,7,6,35,38,39,38,53,38,39,35,6,7,6,7,6,35, +34,39,38,39,38,39,35,6,7,20,7,6,7,34,39,38,39,38,39,34,15,1,6,21,20,31,1,33,55,54,53,52, +53,1,0,24,16,15,1,1,15,16,24,24,16,16,1,1,16,16,24,143,254,224,20,14,13,1,3,14,1,96,15,1, +1,14,13,21,112,7,28,4,4,10,6,5,8,8,15,22,13,13,3,10,39,10,3,4,13,13,18,17,13,13,4,2, +10,39,13,1,11,11,26,15,8,8,5,6,10,4,4,29,6,2,102,1,48,102,1,1,80,1,15,16,24,24,16,15, +1,1,15,16,24,24,16,15,1,254,176,1,13,13,20,16,1,1,15,20,14,13,1,251,8,5,16,2,1,8,6,5, +6,1,15,15,20,12,1,1,9,17,10,11,11,10,17,9,1,1,12,16,17,17,1,5,6,6,8,1,2,16,5,8, +4,4,211,211,3,3,1,1,0,3,0,0,255,192,1,128,1,160,0,34,0,46,0,61,0,0,1,35,6,7,21,35, +53,38,39,35,6,7,21,35,53,38,39,35,6,7,21,23,20,7,6,7,33,38,39,38,53,55,53,38,39,3,35,53, +52,55,54,51,50,23,22,29,1,23,33,6,7,6,7,22,23,33,54,55,38,39,38,39,1,112,56,15,1,48,1,15, +80,15,1,48,1,15,56,15,1,64,2,3,8,1,26,8,3,2,64,1,15,144,64,9,9,14,14,9,9,112,254,223, +20,13,13,1,1,15,1,96,15,1,1,13,14,20,1,160,1,15,48,48,15,1,1,15,48,48,15,1,1,15,176,32, +36,38,38,48,48,38,39,35,32,176,15,1,254,224,64,14,9,9,9,9,14,64,128,1,13,13,20,16,1,1,15,20, +14,13,1,0,0,3,0,0,255,224,2,128,1,160,0,21,0,50,0,72,0,0,19,35,6,7,21,34,7,6,21,20, +23,22,51,23,22,23,51,54,55,17,38,39,37,35,6,7,21,35,53,38,39,35,6,7,17,22,23,51,54,55,53,51, +21,22,23,51,54,55,17,38,39,23,53,38,39,35,6,7,17,22,23,51,54,55,53,50,55,54,53,52,39,38,35,104, +48,22,2,14,9,9,9,9,13,1,2,22,48,22,2,2,22,1,96,48,22,2,128,2,22,48,22,2,2,22,48,22, +2,128,2,22,48,22,2,2,22,152,2,22,48,22,2,2,22,48,22,2,14,9,9,9,9,14,1,96,2,22,104,9, +9,14,14,9,9,104,22,2,2,22,1,16,22,2,64,2,22,168,168,22,2,2,22,254,112,22,2,2,22,168,168,22, +2,2,22,1,144,22,2,192,104,22,2,2,22,254,240,22,2,2,22,104,9,9,14,14,9,9,0,0,0,6,0,16, +255,208,1,240,1,176,0,13,0,29,0,44,0,59,0,74,0,89,0,0,55,22,23,22,23,22,23,22,51,50,55,39, +6,21,37,38,39,38,39,34,53,38,39,38,39,34,7,23,54,53,5,23,54,55,54,55,54,55,39,6,7,6,7,6, +7,23,6,7,34,47,1,38,53,54,55,50,31,1,22,21,55,6,7,34,47,1,38,53,54,55,50,31,1,22,21,39, +54,55,50,31,1,22,21,6,7,34,47,1,38,53,16,2,12,2,10,11,30,31,61,14,16,188,1,1,224,2,12,8, +28,1,10,28,29,41,14,16,188,1,254,43,236,71,46,46,25,25,9,236,71,46,46,25,25,9,229,2,14,6,5,64, +5,1,15,6,5,64,5,48,2,14,6,5,64,5,2,14,6,5,64,5,48,2,14,6,5,64,5,2,14,6,5,64, +5,110,69,38,10,12,12,8,9,1,188,16,15,163,70,38,28,8,1,3,5,5,1,1,188,16,14,74,236,19,39,38, +44,45,36,237,19,39,38,44,45,37,86,15,1,5,63,4,8,14,2,5,64,6,5,48,15,1,5,63,4,8,15,1, +5,64,6,5,112,15,1,5,64,5,6,15,1,5,64,3,8,0,0,0,0,5,0,0,255,195,1,128,1,192,0,23, +0,42,0,59,0,76,0,93,0,0,55,20,23,49,22,51,22,23,22,29,1,51,53,52,55,54,51,50,55,54,61,1, +35,21,19,6,7,49,6,7,20,23,22,23,51,54,55,54,53,38,39,38,39,7,22,51,50,55,54,55,52,39,22,23, +6,7,6,35,38,39,23,38,39,22,51,50,55,54,55,38,39,22,23,20,7,6,35,55,38,39,22,51,50,55,54,53, +52,39,22,23,20,7,6,35,96,9,9,14,14,9,9,64,9,9,14,14,9,9,192,96,82,54,54,2,23,22,38,218, +38,22,23,2,54,54,82,13,6,7,13,9,9,1,3,17,2,1,9,9,13,21,8,45,21,8,6,7,13,9,9,1, +1,2,17,1,9,9,13,63,20,9,6,7,14,9,9,3,18,1,9,9,14,49,14,8,9,1,8,9,13,48,48,13, +9,9,9,9,13,16,16,1,143,2,55,54,83,49,41,41,27,27,41,41,49,83,54,55,2,205,3,9,9,13,7,6, +8,21,13,9,9,1,18,98,1,18,3,9,9,13,7,6,8,21,14,8,9,63,1,18,3,9,9,13,7,6,7,21, +14,9,9,0,0,2,0,0,0,0,2,0,1,128,0,17,0,37,0,0,19,54,55,49,54,55,22,23,22,23,6,7, +6,7,38,39,38,39,23,34,39,49,38,39,21,22,23,22,23,54,55,54,55,53,6,7,6,35,0,3,72,72,109,109, +72,72,3,3,72,72,109,109,72,72,3,255,75,68,68,44,3,72,72,109,109,72,72,3,44,68,68,77,1,32,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,143,15,15,31,110,41,27,27,1,1,27,27,41,110,31,15,15,0, +0,3,0,0,255,192,2,128,1,192,0,17,0,56,0,80,0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55, +52,39,38,47,1,38,7,49,6,7,6,7,6,7,55,50,51,50,21,20,15,1,6,7,6,49,50,23,22,51,22,55, +54,55,54,55,54,55,54,47,1,34,39,37,34,15,1,39,38,35,34,15,1,23,55,54,53,52,47,1,55,54,53,52, +39,38,35,1,239,34,22,22,1,1,22,23,33,33,23,22,1,22,22,35,252,25,44,44,37,16,14,14,10,60,1,1, +6,1,95,5,3,3,1,17,18,28,53,59,59,32,29,17,17,7,7,1,86,1,13,1,108,10,10,224,30,5,8,9, +5,22,87,50,13,3,28,225,12,9,9,15,97,1,22,23,34,34,23,22,1,1,22,23,34,33,23,23,1,135,1,8, +8,27,13,26,26,32,22,6,2,2,112,24,16,15,1,1,1,8,7,22,25,35,35,27,27,1,109,1,216,7,175,37, +6,9,47,109,11,3,12,5,5,36,175,10,15,13,9,10,0,1,0,0,255,192,2,0,1,192,0,4,0,0,19,33, +17,33,17,0,2,0,254,0,1,192,254,0,2,0,0,0,0,3,0,0,255,192,2,0,1,193,0,24,0,51,0,69, +0,0,37,22,23,54,53,52,39,38,39,38,39,34,7,6,15,1,6,7,6,7,23,54,55,54,55,7,39,6,21,22, +31,1,7,6,21,20,31,1,22,51,50,63,1,23,22,51,50,55,38,39,38,63,1,6,7,49,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,1,160,43,32,21,26,25,49,48,69,45,43,43,34,55,1,1,1,1,231,16,30,30,38, +126,238,20,1,34,36,92,11,9,34,10,12,14,10,81,36,37,48,7,7,16,1,1,3,125,41,27,27,1,1,27,27, +41,40,28,27,1,1,27,27,41,161,1,24,46,49,53,49,50,32,33,1,18,17,34,55,2,1,1,2,230,32,20,19, +1,105,238,34,34,47,35,37,82,10,13,13,10,34,9,11,93,36,36,1,28,35,12,12,72,1,27,26,41,40,28,27, +1,1,27,27,41,40,27,27,1,0,0,0,0,6,0,0,255,192,2,0,1,192,0,14,0,37,0,60,0,79,0,99, +0,114,0,0,19,38,39,6,7,6,7,20,23,54,55,54,55,54,55,23,54,53,54,39,38,39,34,35,38,35,34,7, +22,23,22,23,22,7,22,23,22,23,39,52,57,1,52,39,49,38,39,6,7,6,7,6,7,22,23,54,55,54,55,54, +63,1,22,23,49,22,7,20,7,49,50,55,54,53,52,53,38,39,38,39,3,6,7,49,6,7,22,23,22,23,50,55, +54,55,6,35,38,39,38,39,7,6,7,22,23,50,55,54,55,6,35,38,39,38,39,200,21,42,62,37,37,1,8,24, +36,36,36,37,23,182,2,2,22,22,69,2,2,6,7,46,41,47,22,22,6,7,1,12,28,29,41,142,5,4,16,22, +38,37,37,36,18,24,40,17,29,30,29,29,15,87,54,18,18,1,2,45,52,1,2,51,51,81,71,13,23,24,25,21, +48,49,72,49,59,29,10,50,44,60,41,41,16,103,23,12,62,76,52,45,46,35,39,34,77,53,53,25,1,86,39,38, +33,60,59,75,32,30,68,43,44,24,24,9,175,14,24,45,66,65,66,1,15,46,47,47,37,38,17,7,11,11,5,34, +1,15,29,30,37,8,25,25,49,49,78,48,34,63,42,43,24,24,8,237,65,62,62,45,23,16,16,2,2,4,3,89, +66,66,25,254,247,6,19,19,33,18,22,22,2,18,43,54,14,1,15,14,10,104,39,54,39,1,19,19,34,8,2,24, +23,20,0,0,0,7,0,0,255,192,1,224,1,192,0,70,0,79,0,88,0,97,0,106,0,115,0,124,0,0,1,34, +7,49,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29,1,6,7,38,39,53,52,39,38,35,34,7,6,29, +1,6,7,38,39,53,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,20,31,1,22,23,51,54,55,54,55, +53,52,39,38,35,1,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7, +23,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,55,38,39,54,55,22,23,6,7,1,192,14,9,9, +1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,1,15,15,1,9,9,14,14,9,9,60,12, +16,16,12,11,1,12,113,59,82,38,75,49,50,2,9,9,14,255,0,15,1,1,15,15,1,1,15,64,15,1,1,15, +15,1,1,15,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,32,15,1,1,15,15,1,1,15,32,15, +1,1,15,15,1,1,15,1,96,9,9,14,112,15,1,1,15,176,14,9,9,9,9,14,176,15,1,1,15,208,14,9, +9,9,9,14,208,15,1,1,15,176,14,9,9,9,9,14,254,233,59,12,11,12,17,16,12,113,58,1,2,50,49,75, +208,14,9,9,254,192,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1, +32,1,15,15,1,1,15,15,1,64,1,15,15,1,1,15,15,1,96,1,15,15,1,1,15,15,1,0,0,7,0,0, +0,32,2,128,1,96,0,12,0,17,0,26,0,35,0,44,0,53,0,66,0,0,1,51,22,23,22,23,21,6,7,6, +7,35,17,3,33,17,33,17,39,6,7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,7,6,7,22,23,54, +55,38,39,23,54,55,38,39,6,7,22,23,37,51,17,35,38,39,38,39,53,54,55,54,55,1,224,96,27,18,18,1, +1,18,18,27,96,32,255,0,1,0,176,22,2,2,22,22,2,2,22,96,22,2,2,22,22,2,2,22,96,22,2,2, +22,22,2,2,22,96,22,2,2,22,22,2,2,22,254,208,96,96,27,18,18,1,1,18,18,27,1,96,1,18,18,27, +192,27,18,18,1,1,64,254,192,1,64,254,192,232,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,48, +2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,232,254,192,1,18,18,27,192,27,18,18,1,0,0,0, +0,3,0,0,255,224,1,192,1,160,0,6,0,13,0,27,0,0,19,54,55,51,21,35,55,23,53,51,22,31,1,35, +19,6,7,49,6,7,33,38,39,38,39,53,33,21,51,14,29,114,208,51,189,114,29,14,51,208,208,1,18,18,27,254, +192,27,18,18,1,1,192,1,133,26,1,128,101,101,128,1,26,101,255,0,27,18,18,1,1,18,18,27,224,224,0,0, +0,3,0,0,255,192,2,64,1,192,0,29,0,58,0,87,0,0,19,54,55,49,54,55,51,21,22,23,51,54,55,53, +51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,7,21,22,23,51,54,55,53,51,22,23,22,23,21,6,7, +6,7,35,38,39,38,39,53,54,55,54,55,51,33,21,22,23,51,54,55,53,51,22,23,22,23,21,6,7,6,7,35, +38,39,38,39,53,54,55,54,55,51,160,1,13,14,20,48,1,15,32,15,1,48,20,14,13,1,1,13,14,20,160,20, +14,13,1,64,1,15,32,15,1,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,48,1,64,1,15, +32,15,1,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13,14,20,48,1,144,20,14,13,1,80,15,1,1, +15,80,1,13,14,20,128,20,14,13,1,1,13,14,20,128,240,80,15,1,1,15,80,1,13,14,20,128,20,14,13,1, +1,13,14,20,128,20,14,13,1,80,15,1,1,15,80,1,13,14,20,128,20,14,13,1,1,13,14,20,128,20,14,13, +1,0,0,0,0,3,0,0,255,224,2,0,1,192,0,32,0,37,0,66,0,0,1,35,53,38,39,38,39,35,6,7, +6,7,21,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,37,51,21,35,53,19,6,7,35, +21,6,7,35,38,39,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,1,208,80,1,13,14,20, +160,20,14,13,1,80,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,254,224,160,160,192,1,15,54, +2,13,52,15,1,55,15,1,1,15,53,1,15,52,14,1,56,15,1,1,96,48,20,14,13,1,1,13,14,20,48,1, +13,14,20,254,224,20,14,13,1,1,13,14,20,1,32,20,14,13,1,48,48,48,254,246,15,1,54,15,1,1,15,53, +1,15,52,15,1,55,15,1,1,15,54,1,15,52,0,0,0,2,0,0,255,192,1,128,1,192,0,18,0,38,0,0, +19,38,7,6,7,6,7,22,23,22,23,54,55,54,55,38,39,38,39,3,38,39,49,38,39,38,55,54,55,54,23,22, +23,22,7,6,7,6,7,203,11,11,81,49,50,1,1,53,52,86,86,52,53,1,1,50,49,81,11,43,26,26,1,2, +14,14,58,12,12,58,14,14,2,1,26,26,43,1,188,8,8,78,85,84,61,95,52,52,1,1,52,52,95,61,85,84, +78,254,84,1,25,25,41,9,34,34,66,10,10,66,34,34,9,41,25,25,1,0,0,0,0,3,0,0,255,224,2,63, +1,160,0,38,0,50,0,62,0,0,37,39,38,39,34,7,6,7,38,39,38,39,6,7,6,7,21,22,23,22,23,54, +55,54,55,39,48,21,22,31,1,22,23,50,55,54,55,54,39,37,35,53,54,55,54,55,22,23,22,23,21,23,39,38, +55,54,55,54,51,22,31,1,7,2,43,131,36,58,34,31,30,12,3,31,32,46,47,32,31,1,1,32,31,48,48,31, +32,1,1,6,8,131,37,57,35,30,39,8,8,27,254,116,95,1,13,14,20,20,14,13,1,195,66,11,3,4,17,13, +15,26,16,65,82,148,187,48,1,21,21,33,46,30,30,1,1,32,31,47,225,48,31,32,1,1,32,31,48,149,1,12, +12,187,48,1,21,29,44,45,41,44,112,20,14,13,1,1,13,14,20,112,45,94,17,20,21,12,9,1,21,93,58,0, +0,3,0,0,255,192,1,128,1,192,0,29,0,47,0,68,0,0,1,35,38,39,38,39,6,7,6,7,35,6,7,6, +7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7,6,35,34,39,38,53,52,55, +54,51,23,7,6,7,52,7,34,49,34,47,1,38,55,54,31,1,55,54,23,22,7,1,80,54,10,24,24,32,32,24, +24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13,14,20,144,14,9,9,9,9,14,14,9,9,9, +9,14,91,88,7,10,1,1,9,7,56,15,13,16,18,37,72,15,19,16,12,1,128,28,18,17,1,1,17,18,28,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,199, +112,8,1,1,1,6,48,16,18,15,13,31,92,16,12,15,19,0,0,0,0,6,0,0,255,192,1,128,1,192,0,29, +0,38,0,47,0,65,0,76,0,87,0,0,1,35,38,39,38,39,6,7,6,7,35,6,7,6,7,17,22,23,22,23, +33,54,55,54,55,17,38,39,38,39,3,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,55,50,23,49, +22,21,20,7,6,35,34,39,38,53,52,55,54,51,19,35,38,39,54,55,51,22,23,6,7,53,35,38,39,54,55,51, +22,23,6,7,1,80,54,10,24,24,32,32,24,24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1,13, +14,20,240,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,96,14,9,9,9,9,14,14,9,9,9,9,14, +112,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,128,15,1,1,15,1,128,28,18,17,1,1,17,18,28,1, +13,14,20,254,160,20,14,13,1,1,13,14,20,1,96,20,14,13,1,254,184,2,22,22,2,2,22,22,2,96,2,22, +22,2,2,22,22,2,232,9,9,14,14,9,9,9,9,14,14,9,9,254,192,1,15,15,1,1,15,15,1,96,1,15, +15,1,1,15,15,1,0,0,0,7,0,0,255,192,2,63,1,192,0,8,0,26,0,35,0,88,0,97,0,106,0,119, +0,0,37,54,55,52,39,6,7,22,23,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,54,55, +38,39,6,7,22,23,7,54,55,49,54,55,21,51,53,22,23,22,23,22,51,50,55,54,39,38,39,38,39,6,7,38, +39,38,53,52,55,38,39,34,7,6,7,6,7,6,7,34,39,6,7,6,7,6,23,22,23,22,55,37,22,23,6,7, +38,39,54,55,39,22,23,6,7,38,39,54,55,5,33,6,7,21,22,23,33,54,63,1,38,39,1,207,14,1,15,14, +1,2,13,176,37,25,24,1,1,24,24,38,38,24,24,1,1,25,24,37,207,14,1,1,14,15,1,1,15,4,1,27, +27,45,223,45,27,27,1,14,15,24,15,11,3,3,16,4,48,14,27,20,13,14,1,59,70,45,40,40,35,1,13,14, +20,17,12,28,3,16,3,3,11,12,19,19,17,1,3,22,1,2,21,21,2,2,21,95,21,2,1,22,21,2,2,21, +1,63,253,225,14,1,2,13,2,31,14,1,1,1,15,192,1,15,15,1,1,15,15,1,80,1,25,25,37,37,25,25, +1,1,25,25,37,37,25,25,1,80,1,15,15,1,1,15,15,1,119,1,16,16,17,107,107,17,16,16,1,9,20,17, +19,19,12,5,26,21,1,1,13,14,20,5,5,21,1,10,9,14,20,13,13,1,10,16,3,12,19,19,17,16,3,3, +11,31,2,22,22,2,2,22,22,2,96,2,22,22,2,2,22,22,2,216,1,15,16,15,1,1,15,16,15,1,0,0, +0,4,0,0,255,192,1,192,1,192,0,61,0,67,0,74,0,81,0,0,23,20,23,51,54,55,54,55,33,22,23,22, +23,51,54,53,38,39,38,39,6,7,22,23,22,23,35,54,55,54,55,54,55,54,55,52,39,35,6,7,6,7,33,38, +39,38,39,35,6,21,22,23,22,23,22,23,6,7,6,7,6,7,19,38,39,51,6,7,55,6,7,35,38,39,5,1, +54,55,51,22,23,33,0,16,32,14,2,1,3,1,56,2,1,3,13,33,16,2,25,24,68,27,32,8,6,2,1,127, +31,47,85,45,44,17,17,2,16,32,14,2,1,3,254,200,3,1,2,14,32,16,2,13,14,34,33,64,63,34,34,14, +13,2,224,38,26,128,26,38,131,9,12,221,12,9,1,7,254,250,9,12,219,13,9,254,250,46,16,2,1,13,7,11, +11,7,13,1,2,16,30,58,58,62,19,17,6,6,1,1,27,24,44,53,52,47,46,25,16,2,1,13,7,11,11,7, +13,1,2,16,22,40,40,46,47,43,43,47,46,40,40,22,1,18,21,23,23,21,124,16,15,16,16,1,254,193,16,16, +16,16,0,0,0,3,0,0,255,192,2,63,1,192,0,16,0,56,0,74,0,0,37,22,23,55,54,47,1,38,15,1, +23,7,39,7,6,31,1,5,38,39,49,38,15,1,38,39,3,38,39,38,43,1,34,7,6,21,20,23,22,59,1,19, +6,7,22,23,22,23,54,55,54,63,1,54,55,54,39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,1,38,27,23,161,14,4,60,6,14,61,33,61,33,62,13,3,53,1,24,4,12,11,13,203,27,46,92,7,17,16, +21,73,14,9,9,9,9,14,73,92,35,2,1,27,27,41,40,27,27,2,202,13,5,6,4,254,194,14,9,9,9,9, +14,14,9,9,9,9,14,170,7,17,53,6,15,181,13,3,21,99,20,99,20,6,14,160,32,13,6,5,4,67,34,3, +1,20,20,12,12,9,9,14,14,9,9,254,235,27,48,41,27,27,1,1,27,26,40,68,4,12,11,13,138,9,9,14, +14,8,9,9,8,14,14,9,9,0,0,0,0,2,0,0,255,192,2,128,1,192,0,25,0,84,0,0,55,33,54,55, +54,55,53,38,39,38,39,35,21,39,7,53,35,6,7,6,7,21,22,23,22,23,5,33,17,38,39,38,39,35,34,7, +6,21,20,23,22,59,1,22,23,17,20,23,22,59,1,6,21,22,23,22,23,54,55,54,55,52,39,51,6,21,22,23, +22,23,54,55,54,55,52,39,51,54,55,54,53,52,39,38,35,240,1,64,20,14,13,1,1,13,14,20,112,48,48,112, +20,14,13,1,1,13,14,20,1,112,254,32,1,18,18,27,33,13,9,9,9,9,13,17,15,1,9,9,14,67,3,1, +13,14,20,20,14,13,1,3,198,3,1,13,14,20,20,14,13,1,3,67,14,9,9,9,9,14,128,1,13,14,20,192, +20,14,13,1,128,32,32,128,1,13,14,20,192,20,14,13,1,64,1,64,27,18,18,1,9,9,14,14,9,9,1,15, +254,177,14,9,9,9,8,20,14,13,1,1,13,14,20,8,8,8,8,20,14,13,1,1,13,13,20,9,7,1,9,10, +14,13,9,9,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,55,0,0,1,21,51,39,7,53,35,6,7,6, +7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,21,6,7,39,21,6,7,35,38,39,53,7,38,39, +53,54,55,51,53,54,55,51,22,23,21,51,22,23,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32,20,14, +13,1,127,14,10,9,64,1,13,50,1,13,36,13,1,50,13,1,1,13,50,1,13,36,13,1,50,13,1,1,192,128, +128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,174,36,13,1,1,50,14,1,1,13, +51,1,1,13,36,13,1,50,13,1,1,13,50,1,13,0,0,2,0,0,255,192,1,192,1,192,0,3,0,59,0,0, +1,21,51,39,7,53,35,6,7,6,7,21,35,6,7,21,22,23,51,50,31,1,55,54,51,50,31,1,51,22,23,6, +7,35,34,47,1,7,6,35,34,47,1,35,21,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,1,64,128,128, +32,176,20,14,13,1,48,15,1,1,15,128,10,4,18,50,5,9,9,5,28,70,15,1,1,15,80,10,4,18,50,4, +10,10,4,28,70,1,13,14,20,1,32,20,14,13,1,127,14,10,9,1,192,128,128,128,128,1,13,14,20,176,1,15, +32,15,1,9,35,99,8,8,55,1,15,15,1,9,35,99,9,9,55,144,20,14,13,1,1,13,14,20,1,48,9,9, +14,0,0,0,0,4,0,0,255,224,2,64,1,160,0,12,0,17,0,46,0,59,0,0,19,51,17,35,38,39,38,39, +17,54,55,54,55,51,33,17,33,17,23,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35, +6,7,21,35,6,7,21,37,35,17,51,54,55,54,55,17,38,39,38,39,64,32,32,27,18,18,1,1,18,18,27,64, +1,64,254,192,48,1,15,53,1,15,52,15,1,55,15,1,1,15,54,1,15,52,15,1,54,15,1,1,80,32,32,27, +18,18,1,1,18,18,27,1,160,254,64,1,18,18,27,1,64,27,18,18,1,254,64,1,192,250,15,1,54,15,1,1, +15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,250,254,64,1,18,18,27,1,64,27,18,18,1,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,51,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54, +55,54,55,54,55,38,39,38,39,38,39,19,6,7,38,39,53,35,21,6,7,38,39,53,54,55,22,23,21,51,53,54, +55,22,23,21,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,2, +22,22,2,128,2,22,22,2,2,22,22,2,128,2,22,22,2,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,254,152,22,2,2,22,80,80,22,2,2,22,208,22,2,2,22,80,80,22,2, +2,22,208,0,0,4,0,0,255,192,2,64,1,192,0,20,0,53,0,71,0,86,0,0,1,51,50,55,54,61,1,52, +39,38,43,1,34,7,6,29,1,20,23,22,51,37,35,21,6,7,6,7,35,38,39,38,39,53,35,6,7,6,7,17, +22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55, +23,35,38,39,54,55,54,55,51,22,23,22,23,6,7,1,0,64,14,9,9,9,9,14,64,14,9,9,9,9,14,1, +16,144,1,13,14,20,96,20,14,13,1,144,20,14,13,1,1,13,14,20,1,224,20,14,13,1,1,13,14,20,240,27, +18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,96,192,15,1,1,13,14,20,128,20,14,13,1,1,15,1,64, +9,9,14,64,14,9,9,9,9,14,64,14,9,9,64,48,20,14,13,1,1,13,14,20,48,1,13,14,20,254,160,20, +14,13,1,1,13,14,20,1,96,20,14,13,1,160,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,224,1, +15,20,14,13,1,1,13,14,20,15,1,0,0,3,0,0,255,224,1,224,1,192,0,17,0,46,0,67,0,0,1,21, +7,35,38,39,38,39,17,54,55,54,55,33,22,23,22,23,7,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22, +23,51,21,22,23,51,54,55,53,51,54,55,53,5,53,54,55,54,55,51,22,23,6,7,35,6,7,6,7,21,6,7, +38,39,1,224,96,240,20,14,13,1,1,13,14,20,1,32,20,14,13,1,96,1,7,56,1,7,48,7,1,56,7,1, +1,7,56,1,7,48,7,1,56,7,1,254,128,1,34,34,51,240,22,2,2,22,240,31,20,20,1,2,22,22,2,1, +48,240,96,1,13,14,20,1,32,20,14,13,1,1,13,14,20,120,7,1,56,7,1,1,7,56,1,7,48,7,1,56, +7,1,1,7,56,1,7,48,96,240,51,34,34,1,2,22,22,2,1,20,20,31,240,22,2,2,22,0,0,3,0,0, +255,192,2,128,0,128,0,28,0,33,0,38,0,0,37,54,55,53,38,39,33,6,7,21,22,23,51,21,35,6,7,21, +22,23,33,54,55,53,38,39,35,53,51,5,35,53,51,21,51,35,53,51,21,2,112,15,1,1,15,253,160,15,1,1, +15,48,48,15,1,1,15,2,96,15,1,1,15,48,48,254,176,160,160,224,160,160,64,1,15,32,15,1,1,15,32,15, +1,64,1,15,32,15,1,1,15,32,15,1,64,64,64,64,64,64,0,0,0,4,0,0,255,224,2,64,1,160,0,19, +0,31,0,45,0,60,0,0,19,6,7,49,6,7,21,22,23,22,23,54,55,54,55,53,38,39,38,39,23,35,53,54, +55,54,55,22,23,22,23,21,55,38,7,6,23,22,23,22,23,22,55,54,47,1,55,38,39,49,38,7,6,31,1,22, +55,54,39,38,39,112,48,31,32,1,1,32,31,48,48,31,32,1,1,32,31,48,48,96,1,13,14,20,20,14,13,1, +140,7,6,34,4,4,42,44,57,57,49,6,5,211,230,44,57,57,49,6,5,211,7,5,34,3,4,42,1,160,1,32, +31,47,223,48,31,31,1,1,31,32,47,223,47,31,32,1,224,112,20,14,13,1,1,13,14,20,112,30,5,6,49,57, +56,44,43,4,3,34,5,7,211,19,42,4,4,34,6,7,210,6,6,49,57,57,44,0,0,2,0,0,255,192,1,128, +1,192,0,33,0,46,0,0,19,51,22,23,6,7,35,21,51,22,23,6,7,35,21,51,22,23,6,7,35,21,22,23, +22,23,51,54,55,54,55,17,33,21,37,33,6,7,21,22,23,33,54,55,53,38,39,32,112,15,1,1,15,112,112,15, +1,1,15,112,112,15,1,1,15,112,1,18,18,27,192,27,18,18,1,254,192,1,72,254,176,22,2,2,22,1,80,22, +2,2,22,1,0,1,15,15,1,64,1,15,15,1,64,1,15,15,1,32,27,18,18,1,1,18,18,27,1,64,64,192, +2,22,48,22,2,2,22,48,22,2,0,0,0,3,0,0,255,192,1,128,1,192,0,13,0,42,0,55,0,0,55,22, +23,49,22,23,51,54,55,54,55,17,33,17,55,54,55,51,53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,6, +7,35,38,39,53,35,38,39,53,1,33,6,7,21,22,23,33,54,55,53,38,39,32,1,18,18,27,192,27,18,18,1, +254,192,64,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,8,254,176,22,2,2, +22,1,80,22,2,2,22,0,27,18,18,1,1,18,18,27,1,64,254,192,144,15,1,48,15,1,1,15,48,1,15,32, +15,1,48,15,1,1,15,48,1,15,32,1,48,2,22,48,22,2,2,22,48,22,2,0,0,3,0,0,255,192,2,128, +1,192,0,30,0,79,0,97,0,0,1,51,22,23,6,7,35,34,47,1,7,6,7,6,47,1,35,38,39,54,55,51, +50,31,1,55,54,55,54,31,1,7,51,23,22,55,54,63,1,51,22,23,22,23,21,20,7,6,35,34,39,38,61,1, +33,21,20,7,6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51,53,52,55,54,51,7,54,55,49,54,55, +22,23,22,23,6,7,6,7,38,39,38,39,2,12,92,22,2,2,22,104,12,7,24,47,7,13,14,8,41,123,22,2, +2,22,136,13,6,25,46,6,14,13,8,41,204,13,20,19,32,32,15,11,82,41,27,27,1,9,9,14,14,9,9,254, +0,9,9,14,14,9,9,9,9,14,14,9,9,224,9,9,14,224,1,22,23,34,34,23,22,1,1,22,23,34,34,23, +22,1,1,128,2,22,22,2,10,32,100,13,1,1,12,61,2,22,22,2,11,36,97,12,2,1,11,54,96,31,26,1, +4,28,24,1,27,27,41,224,14,9,9,9,9,14,32,32,14,9,9,9,9,14,1,128,14,9,9,9,9,14,255,0, +160,14,9,9,80,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,0,0,0,0,4,0,0,255,192,2,128, +1,192,0,77,0,83,0,101,0,119,0,0,19,6,7,49,6,7,21,35,6,7,22,23,33,22,23,6,7,35,6,7, +22,23,51,22,23,6,7,35,6,7,22,23,51,22,23,6,7,35,21,22,23,22,23,54,55,54,55,51,22,23,22,23, +54,55,54,55,51,50,55,54,53,52,39,38,35,53,52,47,1,38,43,1,53,38,39,38,39,33,5,21,35,53,51,23, +5,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,37,6,7,49,6,7,38,39,38,39,54,55,54,55, +22,23,22,23,112,20,14,13,1,48,15,1,1,15,1,0,15,1,1,15,224,15,1,1,15,192,15,1,1,15,224,15, +1,1,15,192,15,1,1,15,144,1,27,27,41,41,27,27,1,128,1,27,27,41,41,27,27,1,32,14,9,9,9,9, +14,19,77,20,25,51,1,13,14,20,255,0,1,176,128,51,77,254,128,20,14,13,1,1,13,14,20,20,14,13,1,1, +13,14,20,1,112,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,192,1,13,14,20,48,1,15,15,1, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,128,41,27,27,1,1,27,27,41,41,27,27, +1,1,27,27,41,9,9,14,14,9,9,115,26,19,77,19,48,20,14,13,1,237,19,96,77,227,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,48,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,0,0,6,0,0, +255,192,2,128,1,192,0,16,0,21,0,34,0,47,0,74,0,101,0,0,37,33,6,7,6,7,21,22,23,22,23,33, +54,55,53,38,39,7,35,53,51,21,55,35,6,7,21,22,23,51,54,55,53,38,39,51,35,6,7,21,22,23,51,54, +55,53,38,39,3,38,61,1,38,39,35,6,7,21,22,23,22,23,22,29,1,22,23,51,54,55,53,52,39,38,39,7, +38,39,53,38,39,35,6,7,21,20,23,22,23,22,23,21,22,23,51,54,55,53,52,39,38,39,1,176,254,128,20,14, +13,1,1,13,14,20,1,128,15,1,1,15,32,176,176,136,48,7,1,1,7,48,7,1,1,7,96,48,7,1,1,7, +48,7,1,1,7,79,9,1,7,48,7,1,1,28,32,17,18,1,7,48,7,1,23,23,41,65,38,2,1,7,48,7, +1,17,16,27,35,1,1,7,48,7,1,15,15,26,96,1,13,14,20,64,20,14,13,1,1,15,128,15,1,112,64,64, +112,1,7,144,7,1,1,7,144,7,1,1,7,144,7,1,1,7,144,7,1,1,9,6,11,62,7,1,1,7,62,36, +20,21,32,33,38,30,7,1,1,7,30,50,42,43,28,55,27,45,62,7,1,1,7,66,33,28,27,19,26,43,30,7, +1,1,7,30,33,28,28,19,0,2,0,0,255,192,1,255,1,192,0,28,0,64,0,0,1,39,38,7,6,31,1,7, +39,38,7,6,31,1,22,51,50,55,54,47,1,55,23,22,51,50,55,54,39,5,23,22,7,6,35,34,47,1,7,23, +22,7,6,35,34,47,1,7,6,29,1,7,6,23,22,51,50,63,1,51,50,63,1,39,7,1,248,64,17,17,14,14, +16,38,55,17,17,12,10,149,7,7,10,7,14,14,55,38,15,7,10,10,7,14,15,254,217,58,10,10,5,6,6,5, +59,41,58,10,10,5,6,6,5,59,39,19,57,14,14,7,10,10,7,57,89,26,19,187,149,61,1,121,64,14,14,17, +17,15,38,55,14,14,15,16,149,5,7,17,17,55,38,15,7,7,17,17,83,59,11,11,5,5,58,41,59,11,11,5, +5,58,39,19,26,89,57,17,17,7,7,57,19,187,149,61,0,4,255,255,255,192,2,128,1,192,0,14,0,28,0,42, +0,57,0,0,19,6,7,49,6,7,22,23,33,54,53,38,39,38,39,23,33,6,21,22,23,22,23,54,55,54,55,54, +39,19,38,7,6,23,22,23,22,23,22,55,54,47,1,55,38,39,49,38,7,6,31,1,22,55,54,39,38,39,159,62, +44,43,11,1,8,1,48,8,11,43,44,63,153,254,208,8,11,43,44,61,62,43,44,11,1,8,51,7,5,35,4,4, +43,44,57,56,49,6,6,210,230,44,57,56,49,6,6,211,7,5,34,4,4,43,1,1,1,38,37,59,9,1,1,8, +59,38,38,1,177,1,8,59,37,38,1,1,38,37,59,8,1,1,46,6,6,49,57,57,44,43,4,3,34,5,7,211, +19,43,4,3,34,5,7,211,6,6,49,57,57,44,0,0,0,1,0,0,255,192,2,0,1,192,0,45,0,0,1,7, +35,7,6,39,38,63,1,53,55,23,22,51,50,55,54,47,1,55,23,22,51,50,55,54,47,1,55,23,22,51,50,55, +54,47,1,55,54,55,54,23,22,7,6,7,1,227,253,100,89,17,17,14,14,89,49,52,5,6,6,5,10,10,51,41, +52,5,6,6,5,10,10,52,42,52,5,6,6,5,10,10,52,50,28,37,37,30,36,1,1,28,1,29,253,89,14,14, +17,17,89,101,49,51,5,5,11,11,52,41,51,5,5,11,11,52,42,52,5,5,11,11,52,50,28,3,3,23,33,41, +41,28,0,0,0,2,0,0,255,192,2,0,1,192,0,30,0,35,0,0,1,39,38,35,34,7,6,21,20,31,1,1, +6,7,6,23,22,51,49,22,55,1,23,22,51,50,55,54,53,52,39,7,35,55,23,7,1,247,160,10,13,13,10,9, +9,7,254,241,29,4,3,27,32,46,41,32,1,19,7,10,13,13,10,9,9,192,111,150,55,94,1,23,160,9,9,10, +13,13,10,7,254,241,30,40,41,32,36,1,31,1,19,8,9,9,10,13,13,10,87,149,55,94,0,0,0,4,0,0, +255,224,2,0,1,160,0,21,0,26,0,48,0,53,0,0,19,35,6,7,22,23,51,17,22,23,22,23,54,55,54,55, +17,51,54,55,38,39,7,35,53,51,21,37,35,6,7,22,23,51,17,22,23,22,23,54,55,54,55,17,51,54,55,38, +39,7,35,53,51,21,200,176,22,2,2,22,8,1,22,23,34,34,23,22,1,8,22,2,2,22,56,64,64,1,88,176, +22,2,2,22,8,1,22,23,34,34,23,22,1,8,22,2,2,22,56,64,64,1,160,2,22,22,2,254,192,34,23,22, +1,1,22,23,34,1,64,2,22,22,2,224,176,176,224,2,22,22,2,254,192,34,23,22,1,1,22,23,34,1,64,2, +22,22,2,224,176,176,0,0,0,4,0,0,255,192,2,128,1,189,0,35,0,44,0,49,0,54,0,0,23,17,52,55, +54,55,37,54,23,5,22,23,22,21,17,6,7,35,38,39,17,52,39,38,39,33,6,7,6,21,17,6,7,35,38,39, +23,38,39,53,33,21,6,7,33,39,33,21,33,61,1,33,21,33,53,0,11,11,18,1,12,12,12,1,12,18,11,11, +2,22,48,22,2,9,9,14,254,128,14,9,9,2,22,48,22,2,152,22,2,1,128,2,22,254,176,24,1,128,254,128, +1,128,254,128,40,1,61,20,16,15,8,107,5,5,107,8,15,16,20,254,195,22,2,2,22,1,9,13,9,9,1,1, +9,9,13,254,247,22,2,2,22,24,2,22,56,56,22,2,176,64,64,112,80,80,0,0,0,3,0,0,255,192,2,0, +1,192,0,20,0,50,0,68,0,0,1,38,15,1,6,7,6,21,20,23,22,51,50,55,54,53,52,39,55,54,39,55, +35,38,39,38,35,34,7,6,7,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,38,39, +49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,54,14,7,33,17,11,12,12,11,17,17,11,12,11,34,4, +13,138,56,25,35,35,41,41,35,35,25,56,27,18,18,1,1,18,18,27,1,128,27,18,18,1,1,18,18,27,192,54, +36,37,1,1,37,36,54,54,36,37,1,1,37,36,54,1,95,4,13,78,1,11,11,17,17,11,12,12,11,17,16,11, +79,14,7,33,30,17,17,17,17,30,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,240,1, +37,36,54,54,36,37,1,1,37,36,54,54,36,37,1,0,0,4,0,0,255,224,2,0,1,160,0,8,0,17,0,46, +0,119,0,0,55,6,7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,19,54,55,53,38,39,33,6,7,21, +22,23,51,17,35,6,7,21,22,23,33,54,55,53,38,39,35,17,51,7,6,7,35,21,51,22,23,21,6,7,35,21, +51,22,23,22,15,1,6,43,1,34,47,1,38,55,54,55,51,53,35,38,39,53,54,55,51,53,35,38,39,53,54,55, +51,53,35,38,39,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,51,22,23,21,208,15,1,1, +15,15,1,1,15,96,15,1,1,15,15,1,1,15,192,15,1,1,15,254,32,15,1,1,15,16,16,15,1,1,15,1, +224,15,1,1,15,16,16,80,1,7,136,104,7,1,1,7,104,69,20,9,8,10,21,10,18,127,17,10,21,10,8,9, +20,69,104,7,1,1,7,104,136,7,1,1,7,136,104,7,1,1,7,104,1,7,16,7,1,104,7,1,1,7,104,136, +7,1,96,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,1,32,1,15,32,15,1,1,15,32,15,1, +254,192,1,15,32,15,1,1,15,32,15,1,1,64,120,7,1,32,1,7,16,7,1,32,1,16,16,17,32,14,14,32, +17,16,16,1,32,1,7,16,7,1,32,1,7,16,7,1,32,1,7,16,7,1,24,7,1,1,7,24,1,7,16,7, +1,32,1,7,16,0,0,0,0,2,0,14,255,226,2,114,1,159,0,25,0,53,0,0,19,23,55,50,31,1,22,7, +6,15,1,6,47,1,7,6,47,1,38,39,38,63,1,54,51,49,31,1,22,23,22,63,1,21,20,7,6,15,1,6, +47,1,38,39,38,61,1,23,22,55,54,63,1,51,75,245,245,11,5,42,6,6,5,15,163,23,14,83,83,14,23,163, +15,5,6,6,42,5,11,246,55,12,19,20,21,128,10,10,16,204,16,15,205,16,10,10,128,21,20,19,12,55,2,1, +159,30,30,9,84,14,13,13,5,46,6,21,139,139,21,6,46,5,13,13,14,84,9,95,91,19,8,7,5,36,167,16, +13,13,4,51,4,4,51,4,13,13,16,167,36,5,7,8,19,91,0,0,0,4,0,1,255,225,2,0,1,161,0,36, +0,52,0,68,0,84,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22, +51,54,55,54,55,54,55,38,39,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,6,7,51,34,39, +49,38,53,52,55,54,51,50,23,22,21,6,7,51,34,39,49,38,53,52,55,54,51,50,23,22,21,6,7,1,0,71, +58,57,34,34,1,2,55,12,20,20,3,3,2,2,5,50,35,36,19,50,58,71,58,57,34,34,1,1,34,34,58,57, +72,129,14,9,9,9,9,14,14,9,9,2,30,129,14,8,9,9,9,13,13,9,9,2,29,127,14,9,9,9,9,14, +14,9,9,2,30,1,161,1,27,28,47,47,58,76,55,39,27,28,2,3,5,5,1,17,17,16,19,1,27,28,47,46, +58,58,47,47,28,28,1,240,9,9,13,13,9,10,9,9,14,29,2,9,9,13,13,9,10,9,9,14,29,2,9,9, +13,13,9,10,9,9,14,29,2,0,0,0,0,2,0,0,255,193,2,127,1,192,0,21,0,45,0,0,55,22,23,6, +7,6,7,6,23,22,51,54,55,54,55,22,51,50,55,1,6,21,5,39,54,55,54,53,38,39,38,39,38,39,6,7, +39,38,7,6,23,1,22,55,54,39,64,2,55,12,20,20,3,3,2,2,5,50,36,36,19,49,58,56,49,254,170,19, +2,55,118,29,17,17,1,34,34,58,57,71,104,71,107,19,15,12,16,2,79,19,15,13,16,209,75,56,39,27,28,2, +3,5,5,1,17,17,16,19,18,1,11,36,41,230,92,28,35,35,39,58,47,46,28,27,1,2,54,84,12,16,19,15, +254,49,12,16,17,16,0,0,0,2,0,0,255,224,2,128,1,160,0,35,0,58,0,0,37,6,7,49,6,7,21,33, +53,38,39,38,39,6,7,6,7,21,22,23,51,54,63,1,33,21,22,23,51,54,55,53,38,39,38,39,5,21,33,53, +54,55,54,55,53,38,39,38,39,33,6,7,6,7,23,22,23,22,23,2,80,20,14,13,1,254,64,1,13,14,20,20, +14,13,1,1,15,64,14,1,1,1,192,1,15,64,15,1,1,13,14,20,254,48,1,128,1,17,18,28,1,36,37,54, +254,255,54,36,37,1,1,28,18,17,1,224,1,13,14,20,80,80,20,14,13,1,1,13,14,20,192,15,1,1,15,16, +16,15,1,1,15,192,20,14,13,1,48,48,48,30,21,21,6,34,54,37,36,1,1,36,37,54,34,6,21,21,30,0, +0,3,0,0,255,192,2,0,1,192,0,31,0,121,0,153,0,0,37,6,35,34,39,34,55,48,49,38,39,38,39,54, +55,54,55,22,23,22,23,20,7,6,7,6,21,34,7,6,7,49,3,21,6,7,6,7,6,23,22,23,22,31,1,22, +23,22,21,22,21,6,7,6,39,38,39,38,35,38,35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54, +55,54,55,54,55,54,39,38,39,38,39,34,49,35,38,35,38,39,38,51,48,49,38,53,52,55,54,23,22,23,22,51, +22,55,54,39,38,39,53,38,39,6,7,53,7,51,22,23,35,21,33,53,35,54,55,51,22,23,22,23,21,6,7,6, +7,33,38,39,38,39,53,54,55,54,55,49,1,71,34,37,37,34,1,1,46,33,56,2,2,59,59,88,88,59,59,2, +16,15,27,1,1,1,32,44,91,9,7,24,7,3,6,7,11,19,19,2,21,9,3,1,1,7,10,19,11,15,2,2, +1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6,6,11,19,20,1,2,1,1,18,9, +4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,2,18,18,2,188,16,30,42,72,1,128,72,42,30,16,20, +14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,44,12,12,1,17,34,58,86,88,59,59,2,2,59,59, +88,42,37,37,28,1,1,1,32,17,1,37,7,2,3,10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3, +5,3,2,6,1,1,4,17,18,6,2,1,4,5,6,18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5, +1,5,6,3,1,4,4,4,5,1,2,2,1,3,17,18,6,2,3,6,18,2,2,18,1,241,39,25,32,32,25,39, +1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,0,0,0,3,0,0,255,192,1,255,1,191,0,11, +0,54,0,63,0,0,1,53,38,39,38,39,38,7,6,7,22,23,55,6,7,49,6,7,21,38,39,38,39,38,35,34, +7,6,7,22,23,22,23,22,23,7,6,7,6,23,22,23,22,23,50,63,1,51,54,55,54,55,53,55,35,21,38,39, +54,55,22,23,6,7,1,32,43,11,2,10,9,7,32,17,53,78,112,34,22,22,1,79,62,61,31,6,9,10,5,25, +1,1,22,23,39,20,19,144,8,3,3,5,12,36,36,69,12,10,65,77,68,45,45,2,31,111,15,1,1,15,15,1, +1,15,1,25,28,55,70,10,3,3,7,38,49,58,17,103,1,22,23,34,59,5,43,44,69,10,9,53,63,53,48,47, +38,18,14,36,3,7,7,8,22,24,25,5,8,56,2,45,45,68,160,64,96,1,15,15,1,1,15,15,1,0,0,0, +0,1,0,0,255,192,2,63,0,129,0,35,0,0,37,7,6,35,33,38,39,53,54,55,51,55,54,55,51,50,23,22, +7,6,7,35,6,7,22,23,51,55,54,23,22,23,22,7,6,7,2,48,135,28,35,254,165,14,1,2,13,55,47,32, +42,159,15,10,9,2,7,27,77,14,1,2,13,121,119,14,16,16,10,11,3,2,13,56,100,20,1,15,96,15,1,38, +25,1,11,11,15,26,1,2,13,14,1,88,10,3,2,14,15,16,16,10,0,2,0,0,255,192,2,63,1,192,0,22, +0,61,0,0,37,22,63,1,54,39,38,39,38,7,6,15,1,39,38,39,38,7,6,7,6,31,1,5,38,39,49,38, +15,1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15,1,35,6,7,21,22,23,33,50,63,1,54,55, +54,39,1,19,13,13,108,23,1,1,27,24,29,30,22,11,10,22,30,29,25,26,1,1,23,109,1,37,10,16,16,14, +119,121,14,1,2,13,78,12,10,9,3,2,10,9,15,161,41,33,47,55,14,1,2,13,1,90,34,28,135,15,2,3, +10,197,11,11,115,26,34,34,24,20,2,3,22,12,12,22,3,2,20,24,34,34,26,115,85,13,3,2,10,88,2,13, +14,1,8,7,12,15,11,11,26,38,1,15,94,15,1,20,100,10,16,16,14,0,0,0,0,2,0,0,255,192,2,63, +1,192,0,38,0,105,0,0,37,38,39,49,38,15,1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15, +1,39,6,7,21,22,23,33,50,63,1,54,55,54,39,37,38,47,1,38,7,6,7,6,23,22,31,1,22,23,21,22, +23,54,55,53,54,55,54,39,38,47,1,38,39,38,55,48,53,54,23,22,23,22,55,54,39,38,39,53,38,39,6,7, +21,6,7,6,23,22,23,48,49,23,22,23,22,7,48,49,6,39,2,56,10,16,16,14,119,121,14,1,2,13,78,12, +10,9,3,2,10,9,15,161,41,33,47,55,13,2,2,13,1,90,34,28,135,15,2,3,10,254,223,12,14,5,10,8, +9,4,3,4,4,10,5,13,14,2,22,22,2,40,6,4,23,24,21,6,18,3,4,1,5,28,7,12,22,9,5,20, +11,9,2,22,22,2,39,9,3,23,22,17,6,23,5,4,1,4,29,112,13,3,2,10,88,1,15,15,1,7,8,12, +15,11,11,26,38,1,2,15,96,15,1,20,100,10,16,16,14,161,2,6,2,3,4,4,9,9,9,9,4,1,5,4, +12,22,2,2,22,10,10,36,37,15,15,4,2,5,3,3,3,1,10,3,1,4,6,20,22,9,4,2,11,22,2,2, +22,11,9,36,36,15,15,3,2,7,3,3,4,11,4,0,0,2,0,0,255,192,2,63,1,191,0,25,0,64,0,0, +37,54,55,49,54,55,38,39,38,39,38,39,38,7,48,21,6,7,6,7,6,7,22,23,22,23,5,38,39,49,38,15, +1,35,38,39,54,55,51,50,55,54,55,54,39,38,43,1,34,15,1,39,6,7,21,22,23,33,50,63,1,54,55,54, +39,1,31,41,27,26,1,1,15,15,19,19,14,13,13,13,19,19,15,15,1,1,27,27,41,1,25,10,16,16,14,119, +121,14,1,2,13,78,12,10,9,3,2,10,9,15,161,41,33,47,55,14,1,2,13,1,90,34,28,135,15,2,3,10, +192,1,26,27,39,21,29,30,29,28,19,12,12,1,17,29,28,30,29,21,40,26,27,1,80,13,3,2,10,88,1,15, +15,1,7,8,12,15,11,11,26,38,1,2,14,97,15,1,20,100,10,16,16,14,0,0,0,2,0,0,255,192,2,128, +1,128,0,42,0,86,0,0,55,22,31,1,22,55,54,55,54,47,1,38,53,52,55,54,51,50,31,1,22,23,21,6, +7,6,7,35,34,47,1,38,39,53,52,55,54,51,50,23,22,21,7,37,52,55,49,54,51,50,23,22,29,1,6,15, +1,6,43,1,38,39,38,39,53,54,63,1,54,51,50,23,22,21,20,15,1,6,23,22,23,22,63,1,54,61,1,79, +1,19,51,14,17,10,1,1,8,48,9,9,10,13,13,10,72,32,1,1,13,14,20,67,26,19,100,27,1,12,11,17, +17,11,12,1,1,225,12,11,17,17,11,12,1,27,100,20,25,67,20,14,13,1,1,32,72,10,13,13,10,9,9,48, +8,1,1,10,17,14,51,19,184,27,19,51,12,9,7,11,11,9,47,10,13,13,10,9,9,73,33,46,79,20,14,13, +1,19,100,29,38,222,17,11,12,12,11,17,160,160,17,11,12,12,11,17,222,38,29,100,19,1,13,14,20,79,46,33, +73,9,9,10,13,13,10,47,9,11,11,7,9,12,51,19,27,160,0,0,0,2,0,0,255,193,2,128,1,191,0,43, +0,76,0,0,1,35,21,6,7,6,7,6,39,38,39,53,7,6,7,6,21,7,6,7,6,31,1,22,23,22,63,1, +51,54,55,54,55,50,55,54,61,1,51,54,55,53,38,39,55,39,38,39,38,15,1,35,34,7,6,7,21,20,23,22, +51,50,55,54,61,1,51,22,23,22,23,21,55,54,55,54,39,1,232,152,1,17,18,29,33,22,23,1,25,33,19,19, +80,12,3,3,6,80,7,13,12,12,103,137,27,18,18,1,20,14,14,8,22,2,2,22,148,80,7,13,12,12,103,63, +58,49,14,1,12,11,17,17,11,12,184,24,16,15,1,80,12,3,3,6,1,1,52,29,22,21,4,2,21,20,33,121, +15,21,33,33,40,46,7,12,13,11,139,12,3,3,6,60,1,18,18,27,14,14,20,48,2,22,48,22,3,36,139,12, +3,3,6,60,31,9,18,126,17,11,12,12,11,17,89,1,16,15,24,29,47,6,12,13,11,0,0,0,0,2,0,0, +0,0,2,128,1,128,0,48,0,91,0,0,37,7,6,39,38,39,38,55,54,63,1,35,34,7,6,7,35,34,7,6, +29,1,20,23,22,59,1,23,22,55,54,55,23,22,55,54,63,1,23,22,55,54,63,1,54,39,38,47,1,37,35,38, +39,38,43,1,34,15,1,20,49,6,21,20,23,22,23,22,55,48,49,48,49,55,54,23,22,15,1,23,22,23,51,54, +55,54,61,1,52,39,38,35,1,79,30,32,29,29,12,20,1,1,22,82,6,44,40,40,31,96,14,9,9,9,9,13, +114,91,21,26,25,18,18,12,15,15,10,32,5,11,13,12,9,10,8,1,2,10,148,1,17,96,31,40,40,43,9,12, +10,98,13,11,7,16,16,17,80,12,11,9,10,26,145,18,4,82,14,9,9,9,9,14,231,28,26,8,8,14,24,28, +29,21,75,17,16,31,9,10,13,160,13,9,10,82,16,2,3,21,16,9,2,1,12,38,4,8,1,1,11,11,11,13, +12,9,122,89,31,16,17,9,89,1,12,16,16,12,9,3,4,14,73,9,10,12,11,24,118,15,23,1,9,9,13,160, +14,9,9,0,0,1,0,3,255,192,1,252,1,192,0,73,0,0,1,21,51,50,23,55,35,52,53,52,39,38,39,22, +23,22,23,22,7,6,43,1,7,22,29,1,6,7,6,7,35,38,39,38,39,53,54,55,39,35,38,55,54,55,54,55, +6,7,6,21,20,21,35,23,54,59,1,53,35,38,53,38,53,54,55,54,55,22,23,22,23,20,21,35,1,16,32,11, +9,120,28,15,16,26,68,35,36,10,1,4,5,7,6,140,5,1,13,14,20,97,20,13,14,1,1,5,140,6,17,2, +10,36,35,68,26,16,15,28,120,9,10,32,110,1,1,2,39,38,49,51,38,38,2,112,1,0,128,4,132,8,8,48, +41,41,29,26,45,45,41,7,5,6,154,10,12,96,20,14,13,1,1,13,14,20,96,12,10,154,2,16,41,45,45,26, +29,41,41,48,8,8,132,4,128,3,4,4,5,78,50,47,1,1,47,50,78,8,8,0,0,5,0,0,255,192,2,127, +1,192,0,17,0,35,0,112,0,125,0,138,0,0,19,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,23, +33,50,55,49,54,53,52,39,38,39,6,7,6,7,22,23,22,31,1,39,38,39,38,7,6,15,2,39,38,39,35,6, +7,21,47,1,38,39,38,7,6,15,1,6,31,2,22,23,50,51,48,51,54,55,54,47,1,38,47,1,55,23,22,31, +1,22,23,51,54,63,1,54,63,1,23,7,6,15,1,6,23,22,23,50,51,50,49,54,63,2,54,39,5,7,6,23, +22,23,22,55,54,63,1,47,1,5,39,15,1,23,22,23,50,55,54,55,54,39,128,20,13,14,14,13,20,20,14,13, +1,1,13,14,20,1,127,20,14,13,13,13,21,20,14,13,1,1,14,13,20,93,19,8,29,29,28,34,14,11,15,2, +1,15,159,15,1,16,11,14,34,28,29,29,8,18,7,21,67,10,5,27,2,1,1,13,8,8,1,10,3,13,43,17, +7,6,19,51,8,9,159,9,8,51,19,6,7,17,43,13,3,10,1,8,8,14,1,1,1,26,6,10,68,21,6,253, +210,44,4,5,5,12,13,12,11,6,27,2,41,2,80,43,42,2,28,8,20,6,6,13,5,5,4,1,97,14,13,20, +20,14,13,1,1,13,13,20,20,14,13,1,14,13,20,20,14,13,1,1,13,13,20,20,14,13,1,163,80,31,14,12, +16,21,38,34,10,96,15,1,1,15,95,10,34,38,21,16,12,14,31,80,32,25,76,93,27,2,2,10,10,13,93,20, +15,49,71,21,19,13,33,4,1,1,4,33,13,19,21,71,49,15,20,93,13,10,10,2,2,26,93,76,25,32,100,110, +13,12,11,6,4,5,5,12,69,19,46,110,110,46,19,69,19,1,2,6,11,12,13,0,0,3,0,0,255,192,2,64, +1,192,0,18,0,94,0,103,0,0,1,7,38,43,1,34,7,48,49,52,53,54,55,54,55,22,23,22,23,7,50,51, +22,23,54,55,51,7,22,23,51,50,23,22,29,1,20,7,6,43,1,6,7,21,20,7,6,43,1,34,39,38,61,1, +35,21,20,7,6,43,1,34,39,38,61,1,38,39,35,38,39,38,39,54,55,54,55,51,22,23,6,7,35,6,7,22, +23,51,54,55,54,55,54,59,1,23,6,7,22,23,54,55,38,39,1,144,1,7,8,128,25,23,1,27,27,41,41,27, +27,1,16,5,5,7,6,28,45,32,19,24,14,13,14,9,9,9,9,14,32,14,18,9,9,14,32,14,9,9,128,9, +9,14,32,14,9,9,54,9,29,29,19,19,1,1,19,19,29,4,22,2,2,22,4,18,2,2,18,31,10,31,31,45, +18,22,128,40,22,2,2,22,22,2,2,22,1,96,1,1,6,3,3,41,27,27,1,1,27,27,41,32,1,1,33,1, +75,23,30,9,9,14,96,14,9,9,18,14,64,14,9,9,9,9,14,32,32,14,9,9,9,9,14,64,41,71,1,19, +19,29,29,19,19,1,2,22,22,2,1,19,18,2,45,33,33,12,5,112,2,22,22,2,2,22,22,2,0,2,0,0, +255,192,1,192,1,191,0,11,0,66,0,0,55,6,23,49,22,31,1,22,63,1,39,7,33,38,39,49,38,39,49,38, +39,49,38,39,49,38,39,54,55,22,23,6,7,6,7,6,7,23,55,54,55,54,47,1,38,39,38,39,38,7,6,15, +1,6,7,6,23,22,23,19,22,63,1,54,55,54,39,6,7,1,1,10,68,17,15,91,79,117,1,180,1,30,29,43, +44,43,44,30,29,3,23,55,55,22,2,14,13,13,13,1,80,34,21,3,4,17,43,7,10,34,51,51,36,10,7,43, +2,7,6,1,2,23,248,15,17,69,9,1,1,7,4,9,10,10,7,28,9,13,102,88,130,1,32,33,48,48,49,48, +34,33,3,15,2,3,14,4,15,16,14,15,1,87,37,24,32,31,28,75,12,6,20,1,1,22,6,12,73,2,17,17, +26,26,28,254,237,14,10,28,7,10,10,9,0,4,0,0,255,192,2,0,1,192,0,61,0,79,0,114,0,132,0,0, +37,34,7,49,6,21,20,23,22,59,1,22,23,22,23,6,7,6,7,33,54,55,54,55,51,50,55,54,53,52,39,38, +43,1,38,39,38,39,54,55,54,55,51,38,39,38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,35,55,50, +55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,48,57,1,48,49,6,7,20,35,6,49,38,39,38,39, +38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,6,7,49,39,50,55,49,54,53,52,39,38,35,34,7,6, +7,22,23,22,51,1,64,14,9,9,9,9,14,96,41,27,27,1,1,27,27,41,254,236,13,17,9,10,227,14,9,9, +9,9,14,96,41,28,27,1,1,27,28,41,42,17,12,12,1,1,27,27,41,41,27,27,1,2,23,23,23,23,2,96, +96,14,9,9,9,9,14,14,9,9,9,9,14,254,214,7,5,1,9,2,23,23,23,23,2,1,27,27,41,41,27,27, +1,1,12,12,17,3,3,14,12,23,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,9,9,14,14,9,9,1, +27,27,41,41,27,27,1,15,22,13,14,9,9,14,14,9,9,1,27,27,41,41,27,27,1,23,25,26,22,41,27,27, +1,1,27,27,41,33,37,37,26,26,1,128,9,9,14,14,9,9,9,9,14,14,9,9,254,152,8,5,1,10,1,26, +26,37,37,33,41,28,27,1,1,27,28,41,22,26,25,23,4,4,18,14,104,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,2,0,0,255,224,2,0,1,160,0,23,0,36,0,0,19,35,22,23,22,23,22,23,21,20,23,22, +51,50,55,54,61,1,38,39,38,39,38,39,37,6,7,49,6,7,22,23,54,55,54,55,35,64,64,1,30,29,51,50, +63,9,9,13,13,10,10,1,30,29,51,50,63,1,128,64,51,51,30,42,17,87,56,56,2,64,1,97,63,50,51,30, +29,1,128,14,9,10,9,9,14,128,63,50,51,30,30,1,63,1,31,31,52,46,62,11,62,61,89,0,0,2,0,0, +255,192,2,0,1,192,0,41,0,63,0,0,19,50,23,49,22,29,1,33,50,23,22,21,20,7,6,35,33,17,20,7, +6,35,34,39,38,53,17,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51,5,50,23,49,22,29,1,20,7,6, +35,33,34,39,38,61,1,52,55,54,51,33,96,14,9,9,1,96,14,9,9,9,9,14,254,160,9,9,14,14,9,9, +32,14,9,9,9,9,14,32,9,9,14,1,96,14,9,9,9,9,14,255,0,14,9,9,9,9,14,1,0,1,192,9, +9,14,32,9,9,14,14,9,9,254,160,14,9,9,9,9,14,1,96,9,9,14,14,9,9,32,14,9,9,160,9,9, +14,160,14,9,9,9,9,14,160,14,9,9,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,70,0,88,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23, +22,23,22,23,54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,34,7,49,6,7,22,23,22,51,50, +55,54,53,52,39,38,35,23,54,51,49,50,23,22,55,54,39,38,35,34,7,6,23,22,55,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9, +10,12,11,14,23,23,33,32,23,22,14,12,13,9,9,1,1,9,9,13,14,9,9,9,9,14,125,14,21,21,14,10, +13,11,8,25,36,36,25,8,11,13,10,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,70,11,9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16,150,9,9, +14,14,9,9,9,9,14,14,9,9,58,18,18,11,8,10,13,30,30,13,10,7,10,0,0,3,0,0,255,224,2,64, +1,160,0,17,0,51,0,69,0,0,37,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,5,50,23,49, +22,21,20,7,6,35,33,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,20,7,6,7,51,37,54, +55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,32,1,18,18,27,27,18,18,1,1,18,18,27,27,18, +18,1,1,0,14,9,9,9,9,14,254,192,63,50,51,29,30,1,1,30,29,51,50,63,63,50,51,29,30,1,18,18, +31,163,254,192,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,192,27,18,18,1,1,18,18,27,27,18,18, +1,1,18,18,27,160,9,9,14,14,9,9,1,30,29,51,50,63,63,50,51,29,30,1,1,30,29,51,50,63,47,41, +41,31,64,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,3,0,7,255,192,2,128,1,192,0,25, +0,43,0,73,0,0,1,17,6,7,6,7,38,39,38,39,5,6,39,38,39,38,55,54,55,37,17,54,55,54,55,51, +3,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,37,38,55,49,54,63,1,23,22,63,1,54,47,1, +55,54,23,22,31,1,22,7,6,15,1,6,39,38,47,1,2,128,1,32,31,48,47,31,32,2,254,144,13,11,11,4, +3,6,7,13,1,64,1,18,18,27,224,112,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,7,3,6, +7,13,46,21,5,14,31,14,2,21,46,14,11,11,4,41,3,6,7,13,154,14,11,11,3,42,1,192,254,112,48,31, +32,1,1,31,31,46,100,3,6,7,13,13,11,11,4,87,1,34,27,18,18,1,254,160,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,144,14,11,11,3,13,77,13,1,9,5,14,77,13,3,6,7,13,154,14,11,11,4,41, +3,6,7,13,154,0,0,0,0,5,0,0,255,224,2,128,1,160,0,51,0,58,0,76,0,94,0,112,0,0,1,22, +23,49,22,23,21,51,22,31,1,22,29,1,20,7,6,43,1,22,21,6,7,6,7,38,39,38,39,52,55,35,22,21, +6,7,6,7,38,39,6,7,38,39,38,39,17,54,55,54,55,33,23,38,43,1,21,51,39,7,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,50,55, +49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,160,27,18,18,1,49,26,17,58,10,9,9,14,2,2,1, +22,23,34,34,23,22,1,2,164,2,1,22,23,34,41,23,23,41,34,23,22,1,1,18,18,27,1,96,119,2,4,49, +104,49,7,14,9,9,9,9,14,14,9,9,9,9,14,254,192,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9, +9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,48,1,20,71,11,15,90,14,9,9,8,8,34,23,22,1, +1,22,23,34,8,8,8,8,34,23,22,1,1,31,31,1,1,22,23,34,1,48,27,18,18,1,163,3,64,61,237,9, +9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9, +9,14,14,9,9,0,0,0,0,2,0,0,255,193,2,127,1,192,0,10,0,43,0,0,55,22,23,49,22,51,33,54, +55,1,17,5,39,23,22,55,54,55,17,38,39,38,15,1,21,39,53,38,39,38,43,1,39,38,35,34,7,6,23,1, +22,55,54,39,32,1,13,13,20,1,31,31,13,254,134,2,87,89,16,17,16,16,1,1,16,16,17,110,32,1,13,13, +20,255,75,7,8,11,8,12,16,2,79,19,15,13,16,49,20,14,13,1,27,1,40,254,235,70,70,11,11,9,8,20, +1,0,20,8,9,11,75,149,25,189,20,13,14,60,5,9,19,15,254,49,12,16,17,16,0,2,0,16,255,192,1,47, +1,192,0,32,0,37,0,0,23,35,53,54,55,54,47,1,38,39,35,6,15,1,6,23,22,23,21,35,34,7,6,21, +22,23,51,54,55,52,39,38,35,3,51,23,35,55,232,40,53,31,31,4,15,3,13,224,13,3,15,4,31,31,53,40, +17,11,12,1,7,208,7,1,12,11,17,154,164,7,178,7,16,117,13,42,43,56,178,14,1,1,14,178,56,43,42,13, +117,12,11,17,7,1,1,7,17,11,12,1,160,80,80,0,0,2,0,0,255,192,2,128,1,192,0,16,0,42,0,0, +37,35,6,7,6,7,20,23,22,51,33,48,49,48,49,35,39,5,39,54,55,54,55,38,39,38,39,6,7,6,7,39, +38,35,34,7,6,23,1,22,55,54,39,1,29,61,68,45,45,2,9,9,13,1,192,14,244,1,90,250,37,23,22,1, +2,40,41,60,53,39,38,11,141,7,8,11,8,12,16,2,80,19,15,12,16,128,2,45,45,67,14,10,9,192,149,195, +18,34,34,44,61,40,41,1,1,32,32,50,111,5,9,19,15,254,48,12,16,19,15,0,0,6,0,0,255,192,1,192, +1,192,0,7,0,16,0,33,0,67,0,98,0,120,0,0,55,6,7,21,51,53,38,39,51,6,7,22,23,54,55,38, +39,3,23,22,63,2,54,47,2,38,15,2,6,31,2,6,7,38,39,6,7,6,7,20,23,22,59,1,53,52,55,54, +59,1,50,23,22,29,1,51,50,55,54,53,38,39,38,39,37,51,22,23,22,23,54,55,54,55,51,54,55,53,38,39, +35,38,39,38,39,6,7,6,7,35,6,7,21,22,23,55,54,55,49,54,59,1,50,23,22,23,21,6,7,6,7,35, +38,39,38,39,53,176,15,1,32,1,15,96,15,1,1,15,15,1,1,15,108,8,4,4,8,25,5,5,25,8,4,4, +8,25,5,5,25,172,49,63,63,49,50,31,30,1,10,10,15,93,9,9,14,128,14,9,9,93,15,10,10,1,30,31, +50,254,240,14,19,38,39,50,50,39,38,20,13,15,1,1,15,13,20,38,39,50,50,39,38,19,14,15,1,1,15,40, +1,13,14,20,144,20,14,13,1,1,27,27,41,48,41,27,27,1,0,1,15,48,48,15,1,1,15,15,1,1,15,15, +1,1,20,25,5,5,25,8,4,4,8,25,5,5,25,8,4,4,8,143,36,1,1,36,20,43,43,56,15,10,10,64, +14,9,9,9,9,14,64,10,10,15,56,43,43,20,91,43,26,26,1,1,26,26,43,1,15,96,15,1,43,26,26,1, +1,26,26,43,1,15,96,15,1,88,17,11,12,12,11,17,24,41,27,27,1,1,27,27,41,24,0,0,0,3,0,0, +255,192,2,128,1,192,0,18,0,36,0,54,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,38,15,1,39,38,7,6,31,1,22,51,49, +50,63,1,54,39,1,19,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51,54,37,36,1,1,36,37, +54,54,37,36,1,1,36,37,54,1,152,17,17,87,38,17,17,14,14,56,7,10,11,7,104,13,15,144,2,49,49,73, +15,10,10,10,10,15,73,49,49,2,48,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,122,13,15,93,38, +14,14,17,17,56,7,8,112,17,17,0,0,0,4,0,0,255,192,2,128,1,192,0,17,0,32,0,50,0,69,0,0, +37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,35,38,39,53,54,55,22,23,21,51,22,23,6, +7,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,52,55,38,43,1,6,7,6,7,20,23,22, +51,33,38,39,38,53,1,240,61,41,40,2,2,40,41,61,61,41,40,2,2,40,41,61,48,54,9,1,1,15,15,1, +32,15,1,1,15,254,192,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,96,9,26,28,102,73,49,49,2, +10,10,15,1,104,34,20,21,224,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,9,70,15,1,1, +15,48,2,13,15,2,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,112,29,26,9,2,49,49,73,15, +10,10,24,38,37,45,0,0,0,4,0,0,255,192,2,128,1,192,0,34,0,52,0,113,0,131,0,0,5,38,39,7, +6,7,38,39,38,39,38,63,1,52,53,39,38,39,38,43,1,6,7,6,7,20,23,22,51,33,50,55,38,61,1,39, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,5,54,39,55,54,39,38,39,38,15,1,38,39,53,38, +39,38,7,6,29,1,6,7,39,38,7,6,7,6,31,1,6,23,7,6,23,22,23,22,63,1,22,23,21,22,23,22, +55,54,55,53,54,55,23,22,55,54,55,54,47,1,7,38,39,49,38,53,52,55,54,51,50,23,22,23,6,7,6,7, +1,169,3,4,8,9,10,17,12,28,12,7,24,8,7,19,1,22,23,102,73,49,49,2,10,10,15,1,122,9,7,4, +201,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,131,3,3,25,5,1,11,23,4,5,25,17,20,1, +5,34,32,6,20,17,26,4,5,22,11,1,5,25,3,3,25,5,1,11,22,4,5,26,17,20,1,5,34,32,5,1, +20,17,25,5,4,23,11,1,5,25,115,21,13,14,14,13,21,21,13,14,1,1,14,13,21,35,2,2,4,5,1,1, +12,31,39,30,15,5,4,4,4,12,22,6,2,49,49,73,15,10,10,4,8,8,9,227,1,36,37,54,54,37,36,1, +1,36,37,54,54,37,36,1,117,21,21,15,3,6,32,25,4,3,14,14,7,30,5,2,7,7,2,5,30,7,14,14, +3,4,25,32,6,3,15,21,21,15,3,6,32,25,4,2,15,14,7,30,5,2,7,7,2,5,30,7,14,15,2,4, +25,32,6,3,15,28,1,14,13,21,21,13,14,14,13,21,21,13,14,1,0,4,0,0,255,192,2,128,1,192,0,17, +0,36,0,48,0,61,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7, +20,23,22,51,33,38,63,1,54,63,1,38,39,23,6,15,1,20,51,55,54,63,1,39,7,37,39,38,35,34,15,1, +23,55,54,53,52,39,223,54,37,36,1,1,36,37,54,54,36,36,1,1,36,36,54,52,102,73,49,49,2,10,10,15, +1,30,2,2,14,3,11,45,48,71,96,3,2,14,11,71,6,3,126,72,126,1,3,22,11,14,14,12,38,72,39,10, +10,192,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,8,9,71,15,11,46, +46,2,117,3,6,71,11,14,2,3,126,72,126,165,21,11,11,38,72,38,12,14,14,11,0,4,0,0,255,192,2,128, +1,192,0,17,0,36,0,53,0,71,0,0,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35, +6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,23,35,22,23,22,21,20,7,51,50,55,54,53,38,39, +38,47,1,54,55,49,54,55,38,39,38,39,6,7,22,23,6,7,22,23,224,54,37,36,1,1,36,37,54,54,37,36, +1,1,36,37,54,51,102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,204,74,35,20,20,10,138,14,9, +9,2,45,45,69,47,48,31,32,1,1,32,31,48,38,29,18,1,1,31,32,48,192,1,36,37,54,54,37,36,1,1, +36,37,54,54,37,36,1,48,2,49,49,73,15,10,10,10,10,15,73,49,49,2,16,29,40,41,47,20,15,10,9,14, +67,45,45,2,64,1,32,31,48,48,31,32,1,1,22,33,40,54,41,32,1,0,0,0,0,2,0,32,255,192,1,224, +1,192,0,42,0,62,0,0,19,23,21,6,7,22,23,7,6,23,51,54,47,1,54,55,38,39,53,23,21,22,23,22, +23,54,55,54,63,2,54,53,52,47,1,38,15,1,6,21,20,23,5,7,39,6,7,6,7,20,23,22,51,33,50,55, +54,53,38,39,38,39,46,6,11,1,1,10,15,2,9,42,9,1,16,10,1,1,11,52,1,36,37,54,54,36,36,1, +1,82,14,14,190,20,20,190,14,14,1,57,103,103,54,33,33,1,10,10,15,1,122,15,10,10,1,33,33,54,1,112, +1,59,6,14,13,7,62,12,2,2,11,63,7,13,14,6,53,13,60,54,37,36,1,1,36,37,54,60,20,5,11,11, +5,46,4,4,46,5,11,11,5,233,103,103,17,44,44,59,15,10,10,10,10,15,59,44,44,17,0,0,0,5,0,0, +255,192,2,128,1,192,0,31,0,49,0,61,0,79,0,97,0,0,37,35,53,38,39,38,39,38,7,6,7,21,35,6, +7,6,7,21,22,23,22,23,51,54,55,54,55,53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,55,35,53,52,55,54,51,50,23,22,29,1,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23, +22,31,1,52,55,38,43,1,6,7,6,7,20,23,22,51,33,38,39,53,2,80,16,1,19,20,32,37,25,25,1,16, +20,14,13,1,1,13,14,20,192,20,14,13,1,1,13,14,20,96,14,9,9,9,9,14,14,9,9,9,9,14,32,64, +9,9,14,14,9,9,254,208,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,96,4,23,26,102,73,49,49, +2,10,10,15,1,45,15,1,160,75,33,24,23,5,2,23,23,36,80,1,13,14,20,128,20,14,13,1,1,13,14,20, +128,20,14,13,1,144,9,9,14,14,9,9,9,9,14,14,9,9,144,80,14,9,9,9,9,14,80,32,1,36,37,54, +54,37,36,1,1,36,37,54,54,37,36,1,80,13,12,7,2,49,49,73,15,10,10,20,28,128,0,0,0,3,0,0, +255,192,2,128,1,192,0,18,0,36,0,47,0,0,37,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38, +47,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,37,35,6,7,22,23,51,54,55,38,39,1,19, +102,73,49,49,2,10,10,15,1,122,15,10,10,2,49,49,73,51,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,1,136,144,22,2,2,22,144,22,2,2,22,144,2,49,49,73,15,10,10,10,10,15,73,49,49,2,48,1,36, +37,54,54,37,36,1,1,36,37,54,54,37,36,1,56,2,22,22,2,2,22,22,2,0,0,3,0,32,255,192,1,224, +1,192,0,24,0,35,0,55,0,0,19,54,55,22,23,22,23,54,55,54,55,38,39,38,39,6,7,6,7,38,39,22, +23,6,7,55,51,50,23,22,21,35,52,55,54,51,23,7,39,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39, +38,39,64,42,27,12,33,33,45,54,36,36,1,1,36,36,54,38,30,30,16,28,50,2,41,41,2,144,95,14,10,9, +160,9,9,14,130,82,82,62,39,40,1,10,10,15,1,122,15,10,10,1,40,39,62,1,0,1,29,42,25,26,1,1, +36,37,54,54,37,36,1,1,19,19,33,38,2,52,28,28,52,96,9,9,14,14,9,9,211,109,109,12,47,46,65,15, +10,10,10,10,15,65,46,47,12,0,0,0,0,4,0,0,255,192,2,128,1,192,0,20,0,27,0,45,0,66,0,0, +37,39,38,15,1,6,7,22,23,22,23,22,55,54,55,54,55,54,55,38,39,7,53,23,6,7,6,7,37,54,55,49, +54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,38,43,1,6,7,6,7,20,23,22,51,33,50,55,52,51,38, +39,38,39,2,110,115,7,15,115,17,1,2,40,40,51,15,7,27,30,31,22,22,1,1,17,126,96,7,30,31,28,254, +240,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,97,22,24,102,73,49,49,2,10,10,15,1,122,4,4, +1,40,29,29,3,177,45,4,4,45,8,16,84,55,56,19,4,4,9,27,27,44,44,63,16,8,191,189,38,65,37,37, +12,206,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,54,6,2,49,49,73,15,10,10,1,1,30,51,51, +68,0,0,0,0,2,0,0,255,192,2,128,1,192,0,13,0,39,0,0,23,20,23,49,22,51,33,50,55,37,6,7, +6,7,45,1,54,55,54,55,38,39,38,39,6,7,6,7,39,38,35,34,7,6,23,1,22,55,54,39,95,10,10,15, +1,122,9,7,254,253,72,48,48,2,2,24,254,235,42,26,26,1,3,36,36,55,53,36,35,3,153,7,8,11,8,12, +16,2,80,19,15,12,16,29,15,10,10,4,204,4,48,49,72,8,218,12,33,33,45,54,37,36,1,1,36,35,53,120, +5,9,19,15,254,48,12,16,19,15,0,0,0,4,0,0,255,192,2,128,1,192,0,18,0,36,0,58,0,67,0,0, +37,53,38,43,1,6,7,6,7,20,23,22,51,33,54,55,39,38,53,39,54,55,49,54,55,38,39,38,39,6,7,6, +7,22,23,22,23,5,39,38,43,1,34,7,6,29,1,20,31,1,22,51,50,63,1,54,53,52,47,1,38,39,54,55, +22,23,6,7,1,96,35,42,102,73,49,49,2,10,10,15,1,122,19,9,61,28,128,54,37,36,1,1,36,37,54,54, +37,36,1,1,36,37,54,1,151,91,19,26,79,14,9,9,18,91,10,12,13,10,92,10,9,183,22,2,2,22,22,2, +2,22,81,44,19,2,49,49,73,15,10,10,1,14,62,28,40,111,1,36,37,54,54,37,36,1,1,36,37,54,54,37, +36,1,109,90,19,9,9,14,79,27,18,91,9,9,93,10,13,12,10,21,2,22,22,2,2,22,22,2,0,2,0,0, +255,192,1,192,1,192,0,17,0,42,0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,39, +51,7,23,55,22,23,22,23,20,7,6,35,33,34,39,38,53,54,55,54,55,23,55,1,96,1,36,37,54,54,37,36, +1,1,36,37,54,54,37,36,1,143,33,96,33,33,40,59,38,38,1,9,9,13,254,126,13,9,9,1,38,38,59,40, +33,1,64,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,231,55,55,124,161,10,44,44,61,13,9,9,9, +9,13,61,44,44,10,161,124,0,8,0,0,255,192,2,128,1,192,0,17,0,35,0,53,0,74,0,92,0,113,0,174, +0,192,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,55,38,39,38,39, +6,7,6,7,22,23,22,31,1,54,55,49,54,55,38,39,38,39,6,7,6,7,20,23,22,31,1,52,55,34,39,34, +43,1,6,7,6,7,20,23,22,51,33,38,39,38,53,39,52,55,49,52,55,38,43,1,6,7,6,7,22,23,51,38, +39,37,35,34,7,20,23,22,21,6,7,54,55,22,23,51,54,55,38,39,38,39,23,38,39,38,15,1,38,39,53,52, +39,38,7,6,7,21,6,7,39,38,7,6,7,6,31,1,6,23,7,6,23,22,23,22,63,1,22,23,21,20,23,22, +55,54,61,1,54,55,23,22,55,54,55,54,47,1,54,39,55,54,39,7,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,2,0,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,254,128,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,192,44,29,29,1,1,29,30,43,44,29,29,1,29,30,44,48,9,2,1,2,2,100, +60,40,40,2,8,8,12,1,11,26,14,15,184,1,1,17,19,62,37,25,25,1,2,16,199,32,1,1,112,62,19,17, +1,1,1,14,32,39,65,42,3,16,2,1,25,25,37,66,8,17,3,3,20,12,15,4,25,25,2,1,15,12,20,3, +3,17,8,1,3,20,3,3,20,3,1,8,17,3,3,20,12,15,4,26,24,4,15,12,20,3,3,17,8,1,4,19, +3,3,19,4,2,106,14,9,9,9,9,14,14,9,9,9,9,14,1,32,1,22,23,34,34,23,22,1,1,22,23,34, +34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,160,1,29,30,44,44,30,29,1,1,29,30, +44,44,30,29,1,80,25,22,1,1,38,38,56,12,7,8,20,29,29,34,184,6,6,2,2,8,1,26,27,39,17,2, +37,51,24,8,3,2,5,6,32,27,18,1,2,46,2,17,39,27,26,1,175,25,18,3,2,11,10,6,23,4,1,6, +6,2,3,22,6,10,11,2,3,19,24,4,2,11,16,16,11,2,4,25,18,3,2,11,11,5,22,4,1,6,6,1, +4,22,5,11,11,2,3,18,25,4,2,11,16,16,11,1,4,65,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,5,0,0,255,192,2,127,1,192,0,31,0,35,0,65,0,69,0,116,0,0,55,6,7,49,6,7,49,6,7,49, +6,23,22,23,22,23,54,55,54,55,48,53,54,39,38,39,38,39,38,35,34,15,1,55,23,35,1,38,35,49,34,7, +6,7,6,7,6,7,6,21,22,23,22,23,54,55,54,55,52,49,54,39,38,39,38,39,7,55,23,35,23,35,17,54, +63,1,54,55,54,39,38,39,38,15,1,38,39,6,7,6,7,20,21,22,21,7,6,7,6,23,22,23,50,63,1,22, +23,17,22,23,51,54,55,52,39,38,35,85,18,13,27,11,12,2,2,1,1,36,36,54,54,37,36,1,1,4,4,18, +18,42,15,28,28,15,29,72,72,144,1,243,15,28,28,15,28,17,20,9,8,2,1,1,36,37,54,54,36,36,1,1, +4,4,18,18,41,116,72,72,144,56,143,32,12,126,13,6,5,4,4,12,11,13,113,23,46,34,22,22,1,1,124,13, +6,5,4,8,22,5,5,136,6,8,1,15,223,15,1,14,13,21,197,36,26,54,23,23,7,7,5,34,23,22,1,1, +22,23,33,1,6,10,10,36,35,84,27,27,165,143,143,1,37,27,27,56,34,40,17,17,6,6,5,34,22,22,1,1, +22,23,33,1,6,10,10,36,36,82,165,143,143,160,1,39,15,33,43,4,12,11,13,13,6,5,4,37,37,2,1,22, +23,34,3,3,1,2,41,4,12,11,13,21,1,2,45,5,3,254,169,15,1,2,13,21,14,14,0,0,0,5,0,0, +255,192,2,127,1,191,0,27,0,31,0,78,0,108,0,112,0,0,37,38,35,49,34,7,6,7,6,7,6,23,22,23, +22,23,54,55,54,55,52,53,54,39,38,39,38,39,7,55,23,35,55,54,55,54,39,38,47,1,52,53,54,53,38,39, +38,39,6,7,39,38,7,6,7,6,23,22,31,1,22,23,17,35,6,7,6,21,20,23,51,54,55,17,54,55,23,22, +51,5,48,53,49,54,39,49,38,39,49,38,39,38,35,34,7,6,7,6,7,6,23,22,23,22,23,54,55,54,55,39, +23,35,55,2,43,15,28,28,15,29,17,29,5,6,1,1,36,37,54,54,36,36,1,1,4,4,18,18,41,115,72,72, +144,72,22,8,4,5,6,13,122,1,1,22,23,33,46,23,113,14,12,12,4,4,5,6,13,126,12,32,144,20,13,14, +15,223,14,1,8,6,136,7,5,255,0,1,4,4,18,18,42,15,28,28,15,29,17,28,6,6,1,1,36,36,54,54, +37,36,2,128,72,144,72,197,27,27,57,34,56,14,14,6,34,23,22,1,1,22,23,33,1,1,5,11,10,36,36,82, +165,143,143,224,1,21,13,11,12,4,40,2,1,3,3,34,23,22,1,2,37,37,5,6,5,13,13,11,12,4,42,34, +15,254,217,1,13,13,20,16,1,2,13,1,88,3,5,45,2,112,1,5,10,10,35,36,84,27,27,57,34,56,14,14, +6,34,22,22,1,1,22,22,34,160,143,143,0,4,0,0,255,192,2,0,1,192,0,35,0,40,0,61,0,79,0,0, +1,51,55,33,6,7,6,7,21,22,23,22,23,51,23,33,55,35,38,39,54,55,51,55,35,38,39,54,55,51,55,35, +38,39,54,55,5,53,51,23,35,5,33,6,7,6,7,21,20,23,22,51,33,50,55,54,61,1,38,39,38,39,7,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,80,159,17,254,48,20,14,13,1,1,13,14,20,103,9, +1,0,17,97,15,1,1,15,106,18,124,15,1,1,15,132,18,150,15,1,1,15,254,240,70,12,82,1,96,255,0,27, +18,18,1,9,9,14,1,64,14,9,9,1,18,18,27,128,14,9,9,9,9,14,14,9,9,9,9,14,1,128,64,1, +13,14,20,160,20,14,13,1,96,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,128,128,128,192,1,18,18,27, +32,14,9,9,9,9,14,32,27,18,18,1,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0, +255,224,2,64,1,160,0,28,0,59,0,0,19,38,7,6,7,17,20,23,22,55,54,23,22,23,22,23,22,51,54,55, +54,53,17,52,39,38,39,38,39,5,38,35,6,7,6,7,6,49,6,21,17,20,23,22,23,50,55,54,55,54,55,54, +23,22,55,54,53,17,38,39,144,57,68,18,1,7,7,8,64,50,49,30,29,2,5,5,9,4,3,7,2,32,32,55, +1,157,68,57,50,31,31,8,1,7,3,4,9,5,5,2,29,30,49,50,64,8,7,7,1,18,1,160,1,30,9,20, +254,154,9,5,4,3,28,4,5,15,14,4,3,1,5,6,4,1,128,8,5,3,15,14,3,29,29,2,13,13,6,1, +5,8,254,129,5,6,5,1,3,4,14,15,5,4,28,3,4,5,9,1,102,20,9,0,0,5,0,0,255,192,2,64, +1,191,0,20,0,46,0,72,0,91,0,117,0,0,19,38,7,6,21,20,23,22,51,50,55,54,55,54,39,38,53,52, +55,54,47,1,38,7,49,6,7,6,21,20,23,22,23,50,55,54,55,54,39,38,53,52,55,54,39,38,39,5,38,39, +49,38,7,6,7,6,23,22,21,20,7,6,23,22,23,22,51,54,55,54,55,38,39,7,6,23,22,21,20,7,6,23, +22,51,50,55,54,53,52,39,38,15,1,38,7,49,6,7,22,23,17,20,23,22,51,50,55,54,53,17,54,55,54,39, +38,39,38,39,161,20,13,16,12,7,15,5,5,9,3,4,4,8,10,9,18,98,13,12,12,5,21,21,9,21,6,6, +12,5,5,5,16,16,5,5,5,12,1,236,5,12,12,13,12,5,5,5,16,16,5,5,5,12,6,6,21,9,20,1, +1,20,135,19,7,8,10,9,18,6,6,13,8,16,12,11,21,118,32,23,22,1,2,30,9,9,14,14,9,9,18,9, +8,5,5,12,13,18,1,133,9,18,30,33,29,26,14,2,5,9,9,9,16,19,21,18,21,12,57,4,5,5,12,52, +55,57,52,19,1,2,6,12,11,13,40,44,44,40,13,11,12,6,18,12,5,5,4,6,12,11,13,40,44,44,39,13, +12,12,6,2,1,19,52,57,55,52,38,11,21,16,19,21,18,21,12,3,12,30,33,29,26,19,7,7,5,19,18,31, +37,18,254,215,14,9,9,9,9,14,1,41,10,19,19,23,18,12,13,4,0,2,0,0,255,192,2,128,1,192,0,38, +0,59,0,0,55,6,7,49,6,7,55,54,23,22,15,1,6,7,6,49,50,23,22,55,54,55,54,55,54,55,54,55, +54,53,48,49,39,38,7,34,7,6,7,37,38,39,49,38,15,1,39,38,15,1,23,55,54,47,1,55,54,55,54,39, +93,16,14,14,10,60,5,2,2,2,95,5,3,3,1,32,32,46,46,43,43,24,29,17,17,7,6,86,2,28,27,38, +38,31,2,28,8,13,13,11,225,35,11,8,25,87,58,13,6,34,226,10,2,1,8,190,13,26,26,32,22,1,3,4, +4,112,24,15,16,2,1,2,2,7,8,18,25,35,35,27,27,1,109,1,1,8,9,24,246,10,2,1,8,175,44,9, +12,53,109,12,5,13,41,176,8,12,13,11,0,2,0,0,255,224,2,64,1,160,0,16,0,37,0,0,19,33,17,51, +17,38,39,38,35,33,34,7,6,21,17,51,17,1,35,53,38,39,35,6,7,21,35,6,7,21,22,23,33,54,55,53, +38,39,96,1,128,64,1,11,12,16,254,80,18,11,11,64,1,208,144,1,15,160,15,1,208,15,1,1,15,2,32,15, +1,1,15,1,96,254,224,1,56,17,11,12,12,11,17,254,200,1,32,254,192,48,15,1,1,15,48,1,15,32,15,1, +1,15,32,15,1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,32,0,50,0,69,0,0,1,33,6,7,6,7, +21,22,23,53,33,17,35,53,38,39,35,6,7,21,35,22,23,51,54,55,54,55,17,38,39,38,39,1,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39, +2,80,254,128,20,14,13,1,36,27,1,96,64,1,15,96,15,1,96,34,17,254,20,14,13,1,1,13,14,20,254,80, +41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,32,64,54,37,36,1,9,9,14,1,0,14,9,9,1,36, +37,54,1,192,1,14,14,21,46,1,17,50,254,224,48,15,1,1,15,48,25,39,1,14,14,21,1,60,21,14,14,1, +254,192,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,32,1,36,37,54,14,9,9,9,9,14,54,37,36, +1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,40,0,52,0,64,0,0,1,51,22,23,6,7,35,21,23,22, +23,17,35,53,38,39,38,39,6,7,6,7,21,35,17,54,63,1,53,35,38,39,54,55,51,53,54,55,22,23,21,1, +55,21,35,38,39,38,39,53,54,55,49,5,35,53,23,22,23,21,6,7,6,7,49,1,88,32,22,2,2,22,32,113, +22,1,96,1,18,18,27,27,18,18,1,96,1,22,113,32,22,2,2,22,32,2,22,22,2,254,193,103,80,20,14,13, +1,1,24,2,55,80,103,24,1,1,13,14,20,1,144,2,22,22,2,46,68,14,27,254,251,96,27,18,18,1,1,18, +18,27,96,1,5,27,14,68,46,2,22,22,2,24,22,2,2,22,24,254,230,56,238,1,13,14,20,92,27,15,182,238, +56,15,27,92,20,14,13,1,0,6,0,0,255,192,2,0,1,192,0,22,0,65,0,80,0,111,0,127,0,146,0,0, +1,6,7,6,7,38,39,38,39,34,7,39,38,39,54,55,54,55,22,23,22,23,49,5,54,51,50,23,22,23,22,23, +20,7,6,7,48,49,48,49,48,21,49,34,49,48,49,6,7,6,35,38,39,38,35,38,35,38,39,54,55,54,55,54, +55,49,23,54,55,54,55,21,6,7,6,7,52,53,38,39,49,7,6,7,34,7,34,7,6,7,34,39,38,39,38,39, +53,22,23,22,23,54,55,54,55,54,55,54,55,52,51,21,55,54,55,49,54,55,54,55,21,20,7,6,7,52,61,1, +7,54,55,54,55,21,6,7,6,7,38,39,38,39,53,22,23,22,23,2,0,1,37,46,77,5,6,61,87,12,12,2, +37,1,2,54,54,82,82,54,54,2,254,161,15,16,47,39,40,27,38,1,2,8,27,1,27,40,39,48,92,56,1,1, +2,2,37,1,1,35,35,57,16,17,231,43,33,25,19,1,43,22,30,2,22,8,1,37,2,2,1,1,56,92,48,39, +40,27,37,1,19,25,61,87,87,61,12,11,9,8,1,2,1,32,5,4,23,20,25,19,15,26,55,224,87,61,25,19, +2,54,54,82,82,54,54,2,19,25,61,87,1,112,27,21,25,6,3,2,25,1,1,1,21,27,34,23,22,1,1,22, +23,34,81,1,9,8,14,21,28,5,7,20,15,1,15,8,9,1,28,1,2,21,27,27,20,20,8,3,1,26,7,14, +10,15,35,30,21,11,7,2,3,33,20,149,27,21,2,1,28,1,9,8,15,21,27,35,15,10,25,1,1,25,5,6, +5,6,1,1,1,35,58,1,1,6,8,10,15,35,16,15,25,13,2,3,58,170,1,25,10,15,35,34,23,22,1,1, +22,23,34,35,15,10,25,1,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0,1,6,7,49, +6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,3,35,38,53,54,55,54,55,50, +23,6,7,6,7,6,7,6,7,23,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,53,34,7,49,6, +21,20,23,22,51,50,55,54,53,52,39,38,35,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,175,1,16,8,48,48,71,15,2,1,13,59,40,40,7,2,13,175,41,27,27,1,1,27,27, +41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,255,0,2,15,71,48,48,8,16,14,2,6,40,40,59,14,1, +95,1,27,27,40,40,28,27,1,1,27,27,41,41,26,27,1,127,9,9,14,14,9,9,9,9,14,14,9,9,0,0, +0,2,0,0,255,193,2,128,1,192,0,48,0,61,0,0,1,51,22,23,22,31,1,7,21,6,7,6,7,23,22,7, +6,47,1,34,21,34,43,1,23,22,7,6,47,1,35,7,6,39,38,39,38,55,54,55,1,53,54,55,54,55,22,23, +53,7,54,55,52,39,38,35,34,7,6,21,22,23,2,12,50,22,17,17,6,4,96,1,39,38,62,42,7,20,21,10, +47,1,1,1,41,39,7,20,21,10,47,133,74,11,13,13,8,8,1,2,10,1,100,1,25,25,37,42,26,68,22,2, +7,7,10,10,7,7,2,22,1,161,1,13,14,21,15,24,72,67,50,51,18,102,21,10,7,20,114,1,95,21,10,7, +20,113,57,8,1,2,10,11,13,13,8,1,18,29,37,25,25,1,1,31,1,80,1,23,10,7,7,7,7,10,23,1, +0,1,255,255,255,224,2,64,1,160,0,68,0,0,1,20,7,49,6,35,48,49,34,49,3,6,7,33,38,39,3,48, +35,48,35,34,39,38,39,54,55,54,51,50,23,22,21,20,7,23,22,55,54,63,1,38,39,54,55,54,51,50,23,22, +21,6,7,23,22,23,22,63,1,38,39,52,55,54,51,50,23,22,21,2,64,12,11,17,1,50,6,26,254,182,26,6, +50,1,1,17,11,11,1,1,11,12,16,17,11,12,8,89,13,14,14,8,57,18,1,1,11,12,17,17,11,11,1,18, +57,8,14,14,13,90,7,1,12,11,17,17,11,12,1,56,17,11,12,254,234,24,2,2,24,1,22,12,11,17,17,11, +12,12,11,17,14,10,71,10,3,4,13,116,11,22,17,11,12,12,11,17,22,11,116,13,4,3,10,71,11,13,17,11, +12,12,11,17,0,8,0,0,255,192,2,126,1,192,0,20,0,29,0,38,0,47,0,56,0,65,0,87,0,96,0,0, +37,52,47,1,38,35,34,15,1,6,21,20,31,1,22,51,50,63,1,54,39,5,38,39,54,55,22,23,6,7,23,38, +39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23, +6,7,55,35,22,21,20,15,1,21,22,23,22,23,51,54,55,54,61,1,52,39,38,39,7,38,39,54,55,22,23,6, +7,1,191,14,175,14,21,18,16,175,14,14,175,15,20,20,15,175,14,1,254,161,21,2,2,21,21,3,2,22,128,21, +2,2,21,21,2,1,22,21,2,2,21,21,3,2,22,21,2,2,21,21,2,1,22,128,21,2,2,21,21,2,1,22, +239,119,7,24,136,1,14,14,20,223,20,14,13,13,13,21,112,21,2,2,21,21,2,1,22,224,20,15,175,14,14,175, +16,18,20,15,175,14,14,175,14,20,24,2,21,21,2,1,21,22,2,128,2,21,21,2,2,21,21,2,128,2,21,21, +2,1,21,22,2,128,2,21,21,2,2,21,21,2,128,2,21,21,2,2,21,21,2,56,16,16,33,24,137,46,20,14, +13,1,1,13,13,20,225,20,14,13,1,184,2,21,21,2,2,21,21,2,0,6,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,74,0,92,0,110,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18, +27,1,64,27,18,18,1,254,160,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14, +9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,5,0,0,255,224,1,192,1,160,0,20,0,38,0,56,0,74,0,92, +0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1, +128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9, +9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,160, +9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9, +9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0,255,224,1,192,1,160,0,20, +0,38,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18, +27,160,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64, +27,18,18,1,255,0,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,7,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,74,0,92,0,110,0,128,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38, +39,38,39,1,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18, +1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,254,160,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9, +9,96,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14, +9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,224,1,192, +1,160,0,20,0,38,0,56,0,74,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38, +39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22, +21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,128,254,192,27,18,18,1,1, +18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9, +9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18, +1,1,18,18,27,1,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,96,9,9,14,14,9,9,9, +9,14,14,9,9,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,3,0,0,255,224,1,192,1,160,0,20, +0,38,0,56,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1, +128,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,255,0,14,9,9,9,9,14,14,9,9, +9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192,27,18,18,1,1,18,18,27, +1,64,27,18,18,1,160,9,9,14,14,9,9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9, +0,3,0,16,255,240,1,176,1,144,0,18,0,36,0,54,0,0,37,33,34,7,6,21,20,23,22,51,33,50,55,54, +53,52,39,38,35,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,21,6,7,49,6,7,22,23,22, +23,54,55,54,55,38,39,38,39,1,144,254,160,14,9,9,9,9,14,1,96,14,9,9,9,9,14,176,20,14,13,1, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,224,9,9,13, +13,9,10,9,9,14,13,9,9,80,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,224,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,0,0,2,0,0,255,192,2,64,1,192,0,24,0,42,0,0,37,35,17,38, +39,38,39,33,6,7,6,7,17,35,6,7,21,22,23,33,54,55,53,38,47,1,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,2,48,80,1,13,14,20,254,224,20,14,13,1,80,15,1,1,15,2,32,15,1,1,15,176, +14,9,9,9,9,14,14,9,9,9,9,14,0,1,141,22,14,14,1,1,14,14,22,254,115,1,15,32,15,1,1,15, +32,15,1,160,9,9,14,14,9,9,9,9,14,14,9,9,0,3,0,0,255,192,2,64,1,191,0,16,0,33,0,47, +0,0,37,35,17,38,39,38,39,35,21,51,17,51,54,55,53,38,39,1,7,6,7,17,35,6,7,21,22,23,33,17, +38,39,38,7,3,34,39,49,38,53,54,55,22,23,20,7,6,35,2,48,48,1,13,14,20,112,96,112,15,1,1,15, +254,232,192,23,1,48,15,1,1,15,1,48,1,11,12,16,48,10,7,7,2,22,22,2,7,7,10,0,1,78,21,14, +14,1,64,254,128,2,13,31,17,1,1,191,50,7,25,254,147,2,13,31,17,1,1,223,16,10,9,3,254,225,9,9, +13,29,2,2,28,14,9,9,0,1,0,0,255,194,1,255,1,192,0,40,0,0,37,7,51,6,7,6,7,6,15,1, +51,6,7,6,35,38,39,7,6,39,38,55,1,54,39,38,15,1,38,55,54,63,1,54,55,54,23,22,23,22,7,1, +227,131,98,3,1,1,7,6,29,147,98,38,48,47,43,44,27,66,17,17,14,14,1,4,9,9,12,11,178,7,13,13, +44,86,69,68,67,48,39,5,6,34,204,43,3,1,1,7,6,29,49,36,14,14,1,9,66,14,14,17,17,1,3,11, +12,9,9,179,47,58,58,47,85,67,4,3,48,38,53,52,56,0,0,0,0,2,0,0,255,224,2,64,1,160,0,66, +0,75,0,0,37,35,39,55,54,55,38,39,38,39,38,39,38,39,38,39,6,7,6,7,6,7,6,7,6,7,22,23, +22,23,33,54,55,38,39,38,39,35,55,54,39,38,39,38,15,1,6,39,38,63,1,54,51,50,23,22,23,22,7,23, +51,54,55,38,39,38,39,3,54,55,22,23,6,7,38,39,2,16,32,90,140,29,1,1,30,32,32,32,3,5,22,21, +30,30,21,22,6,82,65,65,38,38,1,1,18,18,27,1,48,15,1,1,13,13,20,53,24,18,9,9,33,39,34,32, +13,10,8,11,35,29,34,34,28,10,17,16,2,119,90,15,1,1,13,14,20,184,2,22,22,2,2,22,22,2,32,96, +79,18,33,34,17,17,12,12,1,28,18,18,1,1,18,18,29,8,44,44,69,70,84,27,18,17,1,1,15,20,14,13, +1,32,29,31,32,15,14,25,25,7,11,12,10,26,21,21,6,23,23,41,126,1,15,20,14,13,1,1,48,22,2,2, +22,22,2,2,22,0,0,0,0,2,0,0,255,192,2,0,1,192,0,69,0,82,0,0,19,54,55,49,54,55,51,22, +23,22,23,21,51,22,23,22,23,21,22,23,54,55,53,38,39,38,61,1,39,38,55,54,31,1,22,29,1,6,7,6, +7,38,39,38,39,53,52,39,38,39,35,21,50,23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,17,23,22, +23,51,54,55,53,38,39,35,6,7,21,32,1,18,18,27,160,27,18,18,1,8,37,25,25,1,2,22,22,2,21,13, +14,32,13,13,16,16,77,19,1,20,20,31,31,20,20,1,12,11,17,8,14,9,9,9,9,14,254,224,14,9,9,9, +9,14,64,1,15,128,15,1,1,15,128,15,1,1,128,27,18,18,1,1,18,18,27,192,1,25,25,37,32,22,2,2, +22,155,5,17,16,23,64,32,16,16,13,13,77,19,27,221,31,20,20,1,1,20,20,31,32,17,12,11,1,145,9,9, +14,14,9,9,9,9,14,14,9,9,1,128,112,15,1,1,15,96,15,1,1,15,96,0,0,3,0,0,255,224,2,64, +1,160,0,70,0,87,0,104,0,0,37,39,38,39,38,15,1,6,31,1,22,63,1,54,23,22,31,1,38,39,38,7, +35,38,7,6,7,55,54,55,54,31,1,22,63,1,54,47,1,38,7,6,15,1,6,29,1,22,23,22,23,51,54,55, +54,63,1,51,23,22,23,22,23,51,54,55,54,55,53,52,39,5,6,7,49,6,7,35,38,39,38,39,53,54,55,50, +23,7,37,6,7,49,6,7,35,34,39,38,47,1,54,51,22,23,21,2,62,45,10,33,33,38,15,13,3,5,6,14, +14,17,16,16,4,39,34,48,52,62,74,62,52,48,34,39,4,16,16,17,14,14,6,5,3,13,16,36,34,33,10,45, +2,1,33,32,49,37,47,32,32,4,3,36,3,4,32,32,47,37,49,32,33,1,2,254,141,2,14,14,21,37,22,14, +14,1,28,45,35,35,4,1,53,1,14,15,21,37,21,14,14,2,4,35,35,45,28,168,181,37,19,18,11,6,6,14, +15,13,3,4,6,7,9,17,154,11,1,2,28,28,2,1,11,154,17,9,7,6,4,3,13,15,14,6,6,11,18,19, +37,181,8,8,70,48,32,33,1,1,29,30,45,39,39,45,29,30,1,1,32,33,48,70,8,8,90,20,13,12,1,1, +14,14,21,37,12,1,13,41,4,21,14,14,1,13,13,20,41,13,1,12,37,0,0,0,0,2,0,0,255,224,1,192, +1,159,0,24,0,43,0,0,55,22,23,50,55,37,54,55,38,39,37,38,7,6,7,6,23,22,31,1,7,6,7,6, +23,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,34,9,21,6,6,1,64,19,1,1,19,254, +192,13,12,11,6,4,5,5,12,246,246,12,5,5,4,1,126,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9, +14,116,19,1,2,127,10,21,21,9,128,4,5,5,12,13,12,11,6,98,98,6,11,12,13,84,9,9,14,14,9,9, +9,9,14,14,9,9,0,0,0,3,0,4,255,192,2,128,1,192,0,48,0,57,0,83,0,0,19,54,55,49,54,51, +33,50,23,22,21,20,7,6,43,1,21,51,22,23,22,23,21,20,7,6,43,1,34,47,2,38,47,1,38,55,51,50, +31,1,51,53,35,34,39,38,39,49,1,51,53,38,39,38,39,35,21,23,7,6,7,33,34,39,38,39,54,55,54,51, +33,50,63,1,54,51,50,23,22,21,20,7,49,127,1,9,9,13,1,129,14,9,9,9,9,14,160,32,68,45,45,2, +9,9,14,241,15,10,87,144,15,4,23,2,17,27,17,10,37,208,160,13,9,9,1,1,1,128,1,27,27,41,32,247, +4,38,53,254,231,13,9,9,1,1,9,9,13,1,25,27,19,3,10,13,13,10,9,9,1,160,14,9,9,9,9,14, +14,9,9,64,2,45,45,68,64,14,9,9,13,115,58,6,16,92,18,2,13,51,64,9,9,14,254,224,32,41,27,27, +1,128,151,4,36,1,9,9,14,14,9,9,19,4,9,9,10,13,13,10,0,3,0,0,0,32,2,128,1,96,0,30, +0,46,0,63,0,0,1,6,15,1,39,38,39,6,7,6,7,21,22,23,22,23,54,63,1,23,22,23,54,55,54,55, +53,38,39,38,39,5,6,35,38,39,38,39,53,54,55,54,55,50,31,1,7,37,6,7,49,6,7,34,47,1,55,54, +51,22,23,22,23,21,1,239,60,43,72,72,43,60,61,41,41,2,2,41,41,61,60,43,72,72,43,60,61,41,41,2, +2,41,41,61,254,220,24,34,34,23,23,1,1,23,23,34,34,24,72,72,1,117,1,23,23,34,34,24,72,72,24,34, +34,23,23,1,1,96,1,42,72,72,42,1,2,41,41,61,30,61,41,41,2,1,42,72,73,41,1,2,41,41,61,30, +61,41,41,2,232,24,1,23,23,34,30,34,23,23,1,24,72,72,57,34,23,23,1,24,72,72,24,1,23,23,34,30, +0,2,0,0,255,224,2,64,1,160,0,50,0,59,0,0,37,21,6,7,38,39,53,6,35,34,39,21,6,7,38,39, +53,38,39,38,39,54,55,54,55,22,23,22,23,22,23,51,22,23,22,23,21,6,7,6,47,1,6,43,1,6,7,6, +7,6,7,55,54,55,38,39,6,7,22,23,1,0,2,22,22,2,8,8,25,23,2,22,22,2,44,26,25,1,2,54, +54,82,55,44,24,25,25,27,56,54,37,36,1,1,10,11,7,85,7,7,56,27,25,25,24,16,19,192,22,2,2,22, +22,2,2,22,43,51,22,2,2,22,41,1,7,47,22,2,2,22,66,25,44,43,54,82,54,54,2,1,27,14,11,10, +1,1,36,37,54,240,11,4,3,9,122,1,1,10,11,14,10,7,157,2,22,22,2,2,22,22,2,0,0,2,0,0, +255,224,1,192,1,159,0,24,0,43,0,0,55,5,22,51,54,55,54,39,38,47,1,55,54,55,54,39,38,39,38,7, +5,6,7,22,23,5,33,34,7,6,21,20,23,22,51,33,50,55,54,53,52,39,38,35,52,1,64,6,5,21,9,5, +5,6,12,245,246,12,5,5,4,6,11,12,13,254,192,19,1,1,19,1,108,254,128,14,9,9,9,9,14,1,128,14, +9,9,9,9,14,226,128,2,1,19,13,12,11,6,98,98,6,11,12,13,12,5,5,4,128,9,21,21,9,194,9,9, +13,13,10,10,9,9,14,14,9,9,0,0,0,5,0,0,0,0,2,64,1,128,0,32,0,55,0,68,0,81,0,94, +0,0,55,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51, +53,33,21,1,53,38,39,38,39,33,6,7,6,7,21,22,23,6,7,21,33,53,38,39,54,55,5,6,7,35,38,39, +53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23, +21,0,80,1,15,15,1,96,1,15,15,1,96,1,15,15,1,96,1,15,15,1,80,253,192,2,64,1,13,14,20,254, +32,20,14,13,1,30,2,2,30,2,64,30,2,2,30,254,128,1,15,32,15,1,1,15,32,15,1,128,1,15,32,15, +1,1,15,32,15,1,128,1,15,32,15,1,1,15,32,15,1,0,32,15,1,1,15,32,32,15,1,1,15,32,32,15, +1,1,15,32,32,15,1,1,15,32,96,96,1,45,35,20,14,13,1,1,13,14,20,35,12,33,33,12,83,83,12,33, +33,12,93,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15,96,15,1,1,15, +96,0,0,0,0,2,0,0,255,192,2,127,1,192,0,33,0,88,0,0,5,35,53,54,55,39,6,39,38,39,38,39, +53,39,21,22,23,22,23,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,23,39,54,55,53,38,39,6,7,21, +6,7,39,54,53,35,39,54,59,1,53,35,38,39,54,55,51,53,35,38,39,54,55,51,38,39,38,35,6,7,6,7, +21,39,38,35,34,7,6,23,1,22,55,54,39,1,127,39,31,27,44,22,24,51,34,35,1,48,1,42,42,66,40,13, +9,9,2,14,159,14,1,1,8,9,14,248,159,23,1,2,21,22,2,1,14,26,9,57,35,5,7,79,81,14,1,2, +13,79,79,14,1,2,13,80,1,28,28,42,40,26,26,1,184,7,8,11,8,12,16,2,79,19,15,13,16,16,34,4, +14,34,7,1,5,38,39,51,4,37,38,69,51,51,11,34,9,9,13,16,1,2,13,14,10,9,5,125,39,49,40,22, +2,2,22,39,32,26,20,17,21,27,5,31,2,13,14,2,33,2,13,14,1,42,27,27,1,28,28,41,50,145,5,9, +19,15,254,49,12,16,17,16,0,6,0,0,255,224,2,64,1,160,0,34,0,52,0,59,0,66,0,74,0,82,0,0, +19,22,55,49,54,55,54,55,54,23,22,23,17,6,7,6,39,38,7,6,7,34,49,6,7,6,39,38,39,17,54,55, +54,23,49,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,7,51,38,39,38,39,21,17,21,54,55, +54,55,35,5,6,7,49,6,7,51,53,39,22,23,49,22,23,53,35,49,59,60,60,60,65,66,65,65,26,1,1,15, +14,19,59,60,60,60,1,66,65,65,64,26,1,1,15,14,19,238,35,22,23,1,1,23,22,35,33,23,23,1,1,23, +23,33,224,64,1,17,18,28,28,18,17,1,64,1,193,27,18,18,1,64,64,1,18,18,27,64,1,113,15,9,8,17, +18,8,8,22,12,30,254,202,18,10,9,4,15,9,8,17,18,8,8,22,12,30,1,53,19,10,9,4,254,239,1,27, +27,42,41,27,27,1,1,27,27,41,42,27,27,1,64,27,18,18,1,64,1,17,64,1,17,18,28,160,1,18,19,27, +65,208,28,18,17,1,64,0,0,7,0,0,255,224,2,64,1,160,0,20,0,55,0,63,0,71,0,78,0,85,0,103, +0,0,55,54,55,51,22,23,21,51,22,23,6,7,35,38,39,54,55,51,53,38,47,1,22,55,49,54,55,54,55,54, +23,22,23,17,6,7,6,39,38,7,6,7,34,49,6,7,6,39,38,39,17,54,55,54,23,49,19,38,39,49,38,39, +21,51,39,54,55,49,54,55,35,21,5,53,6,7,6,7,51,17,35,22,23,22,23,53,7,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,251,2,18,16,19,2,4,18,2,2,18,49,18,2,2,18,4,14,2,202,59,60, +60,60,65,66,65,65,26,1,1,15,14,19,59,60,60,60,1,66,65,65,64,26,1,1,15,14,19,78,1,17,18,28, +64,64,28,18,17,1,64,1,193,27,18,18,1,64,64,1,18,18,27,225,41,27,27,1,1,27,27,41,42,27,27,1, +1,27,27,42,241,18,2,2,18,68,2,18,19,1,1,19,18,2,47,4,17,128,15,9,8,17,18,8,8,22,12,30, +254,202,18,10,9,4,15,9,8,17,18,8,8,22,12,30,1,53,19,10,9,4,254,175,27,18,18,1,64,193,1,17, +18,28,64,129,65,1,18,19,27,1,1,28,18,17,1,64,48,1,32,32,47,48,32,32,1,1,32,32,48,47,32,32, +1,0,0,0,0,4,0,0,0,0,2,64,1,128,0,21,0,32,0,43,0,56,0,0,1,22,23,49,22,23,17,6, +7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,6,7,22,23,51,54,55,38,39,35,21,33,54,55,38,39,33, +6,7,22,23,37,6,7,21,22,23,51,54,55,53,38,39,35,2,0,27,18,18,1,1,18,18,27,254,64,27,18,18, +1,1,18,18,27,1,192,254,112,15,1,1,15,160,15,1,1,15,160,1,96,15,1,1,15,254,160,15,1,1,15,1, +8,22,2,2,22,80,22,2,2,22,80,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18, +1,160,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1,192,2,22,48,22,2,2,22,48,22,2,0,0, +0,4,0,0,0,0,2,64,1,128,0,21,0,32,0,43,0,132,0,0,1,22,23,49,22,23,17,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,33,7,6,7,22,23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22,23, +39,38,39,6,7,21,6,7,6,7,6,23,22,23,22,31,1,22,23,22,21,22,21,6,7,6,39,38,39,38,35,38, +35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54,55,54,55,54,55,54,39,38,39,38,39,34,49,35, +38,35,38,39,38,51,48,49,38,53,52,55,54,23,22,23,22,51,22,55,54,39,38,39,53,2,0,27,18,18,1,1, +18,18,27,254,64,27,18,18,1,1,18,18,27,1,192,240,15,1,1,15,224,15,1,1,15,224,224,15,1,1,15,224, +15,1,1,15,108,1,20,17,2,9,7,24,7,3,6,7,11,19,19,2,21,9,3,1,1,7,10,19,11,15,2,2, +1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6,6,11,19,20,1,2,1,1,18,9, +4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27, +1,0,27,18,18,1,128,1,15,15,1,1,15,15,1,128,1,15,15,1,1,15,15,1,160,18,2,2,18,6,2,3, +10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3,5,3,2,6,1,1,4,17,18,6,2,1,4,5,6, +18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5,1,5,6,3,1,4,4,4,5,1,2,2,1,3,17, +18,6,2,3,6,0,0,0,0,1,0,16,255,224,1,176,1,159,0,63,0,0,37,20,7,49,6,43,1,7,6,7, +34,39,38,39,38,63,1,35,34,39,38,53,52,55,54,59,1,55,35,34,39,38,53,52,55,54,59,1,55,54,55,54, +23,22,23,22,15,1,51,50,23,22,21,20,7,6,43,1,7,51,50,23,22,21,1,176,9,9,14,212,65,11,16,9, +9,11,2,3,7,42,63,14,9,9,9,9,14,106,63,169,14,9,9,9,9,14,212,65,8,13,12,12,11,2,3,7, +42,63,14,9,9,9,9,14,106,63,169,14,9,9,112,14,9,9,98,13,1,5,8,13,12,12,62,9,9,14,14,9, +9,96,9,9,14,14,9,9,98,11,2,3,7,8,13,12,12,62,9,9,14,14,9,9,96,9,9,14,0,5,0,0, +255,192,2,0,1,192,0,49,0,67,0,85,0,103,0,121,0,0,37,20,7,49,48,21,20,7,6,43,1,6,7,6, +7,20,23,22,23,22,23,48,21,22,23,20,7,6,7,34,35,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22, +23,22,23,53,33,6,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,39,55,50,55,49,54,53,52,39,38,39, +6,7,6,21,20,23,22,51,55,6,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,39,23,50,55,49,54,53, +52,39,38,39,6,7,6,21,20,23,22,51,2,0,1,21,20,28,98,20,14,13,1,1,3,5,2,1,11,1,15,14, +24,6,5,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,96,14,9,9,9,9,14,14,9,9, +9,9,14,32,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9, +9,9,9,14,14,9,9,9,9,14,193,2,1,1,27,17,16,1,14,14,20,5,5,12,12,3,3,1,20,21,24,18, +18,2,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,1,1,9,9,13,14,9,9,9,9,14,13, +9,9,1,64,9,9,14,13,9,9,1,1,9,9,13,14,9,9,128,1,9,9,13,14,9,9,9,9,14,13,9,9, +1,128,9,9,14,13,9,9,1,1,9,9,13,14,9,9,0,3,0,0,255,224,1,192,1,160,0,11,0,33,0,59, +0,0,55,53,51,50,23,22,21,20,7,6,43,1,55,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54, +55,54,55,33,7,38,39,49,38,39,35,34,7,6,29,1,20,23,22,51,50,55,54,61,1,51,54,55,54,55,192,48, +14,9,9,9,9,14,48,192,27,18,18,1,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,48,1,27,27, +41,72,17,11,12,9,9,14,14,9,9,48,41,27,27,1,192,64,9,9,14,14,9,9,224,1,18,18,27,254,192,27, +18,18,1,1,18,18,27,1,64,27,18,18,1,192,41,27,27,1,12,11,17,184,14,9,9,9,9,14,32,1,27,27, +41,0,0,0,0,1,0,0,255,224,2,64,1,160,0,63,0,0,19,54,55,49,54,55,51,22,23,22,23,21,51,53, +54,55,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,35,21,20,21,23,51,22,23,22,23,21,6, +7,6,7,35,38,39,38,39,53,52,53,39,35,38,39,38,39,53,0,1,13,14,20,96,20,14,13,1,192,1,13,14, +20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,192,80,96,20,14,13,1,1,13,14,20,96,20,14,13,1,80, +96,20,14,13,1,1,112,20,14,13,1,1,13,14,20,16,16,20,14,13,1,1,13,14,20,96,20,14,13,1,1,13, +14,20,16,16,3,1,108,1,13,14,20,96,20,14,13,1,1,13,14,20,96,3,2,107,1,13,14,20,96,0,0,0, +0,4,0,0,255,192,1,128,1,192,0,39,0,50,0,61,0,72,0,0,19,54,31,1,55,54,31,1,55,54,31,1, +55,54,23,22,23,17,6,7,6,47,1,7,6,47,1,7,6,47,1,7,6,39,38,39,17,54,55,49,23,6,7,22, +23,51,54,55,38,39,35,21,51,54,55,38,39,35,6,7,22,23,53,6,7,22,23,51,54,55,38,39,35,14,14,12, +40,40,16,16,40,40,16,16,40,40,12,14,13,1,1,13,14,12,40,40,16,16,40,40,16,16,40,40,12,14,13,1, +1,13,82,15,1,1,15,192,15,1,1,15,192,192,15,1,1,15,192,15,1,1,15,15,1,1,15,192,15,1,1,15, +192,1,190,6,10,34,34,12,12,34,34,12,12,34,34,10,6,7,15,254,48,15,7,6,10,34,34,12,12,34,34,12, +12,34,34,10,6,7,15,1,208,15,7,142,1,15,15,1,1,15,15,1,224,1,15,15,1,1,15,15,1,128,1,15, +15,1,1,15,15,1,0,0,0,8,0,0,255,192,2,128,1,192,0,12,0,44,0,49,0,67,0,72,0,77,0,95, +0,108,0,0,55,6,29,1,20,23,22,59,1,53,35,34,7,37,35,53,52,39,38,35,34,7,6,29,1,35,6,7, +6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,35,53,51,21,39,34,39,49,38,53,52,55,54,51, +50,23,22,21,20,7,6,35,23,35,53,51,21,51,35,53,51,21,39,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,55,38,43,1,21,51,50,55,54,61,1,52,39,9,9,9,10,13,32,32,13,10,1,199,112,9,9,14, +14,9,9,112,34,23,22,1,1,18,18,27,1,64,27,18,18,1,1,22,23,34,208,64,64,32,17,11,12,12,11,17, +17,11,12,12,11,17,128,64,64,96,64,64,32,17,11,12,12,11,17,17,11,12,12,11,17,215,10,13,32,32,13,10, +9,9,215,10,13,128,13,10,9,192,9,137,64,14,9,9,9,9,14,64,1,22,23,34,254,240,27,18,18,1,1,18, +18,27,1,16,34,23,22,1,254,192,32,32,120,12,11,17,17,11,12,12,11,17,17,11,12,120,32,32,32,32,120,12, +11,17,17,11,12,12,11,17,17,11,12,63,9,192,9,10,13,128,13,10,0,1,0,4,255,196,1,252,1,188,0,49, +0,0,23,6,35,49,34,47,1,38,53,52,63,1,23,22,55,54,47,1,55,23,22,55,54,47,1,55,23,22,55,54, +47,1,55,23,22,55,54,47,1,55,54,51,50,31,1,22,21,20,7,1,178,15,19,19,15,92,14,14,51,48,11,11, +10,10,48,42,48,11,11,10,10,48,42,48,11,11,10,10,48,42,48,11,11,10,10,48,51,15,19,19,15,92,14,14, +254,196,46,14,14,92,15,19,19,15,51,48,10,10,11,11,48,42,48,10,10,11,11,48,42,48,10,10,11,11,48,42, +48,10,10,11,11,48,51,14,14,92,15,19,19,15,254,196,0,1,0,0,255,192,2,0,1,192,0,68,0,0,23,17, +54,55,54,55,51,22,23,22,23,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,22, +23,54,55,53,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,22,23,22,23,21,6,7,6,7,33,34,39,38, +39,52,53,0,1,13,14,20,96,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,1, +15,15,1,64,1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,254,96,19,13,13,3,16,1,160,20, +14,13,1,1,13,14,20,48,1,15,15,1,64,1,15,15,1,64,1,15,15,1,80,15,1,1,15,80,80,15,1,1, +15,80,80,15,1,1,15,80,1,13,14,20,96,20,14,13,1,12,13,18,2,3,0,0,0,1,0,0,0,64,2,128, +1,64,0,56,0,0,19,54,55,49,54,55,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,21,22,23,54,55, +53,51,21,22,23,54,55,53,51,21,22,23,54,55,53,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,0, +1,13,14,20,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,1,15,15,1,64,20,14, +13,1,1,13,14,20,253,224,20,14,13,1,1,16,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15, +1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,1,13,14,20,160,20,14,13,1,1,13,14,20,160,0,0, +0,1,0,0,255,192,1,0,1,192,0,49,0,0,19,54,55,49,54,55,51,22,23,22,23,21,35,6,7,22,23,51, +21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,35,6,7,22,23,51,21,6,7,6,7,35,38,39,38,39,17, +0,1,13,14,20,160,20,14,13,1,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1,15,80,80,15,1,1, +15,80,1,13,14,20,160,20,14,13,1,1,144,20,14,13,1,1,13,14,20,48,1,15,15,1,64,1,15,15,1,64, +1,15,15,1,64,1,15,15,1,48,20,14,13,1,1,13,14,20,1,160,0,8,0,0,255,192,2,128,1,192,0,14, +0,40,0,52,0,65,0,78,0,91,0,104,0,122,0,0,1,22,23,21,51,22,23,6,7,35,38,39,53,54,63,1, +23,22,23,22,21,17,6,7,6,7,33,38,39,38,39,17,52,55,54,63,2,54,31,1,3,51,53,38,39,38,39,6, +7,6,7,21,3,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,5,6, +7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,3,6,7,49,6,7,22,23, +22,23,54,55,54,55,38,39,38,39,1,64,15,1,16,15,1,1,15,32,15,1,1,15,157,125,17,10,11,1,13,14, +20,253,224,20,14,13,1,11,10,17,125,139,17,19,139,221,128,1,18,18,27,27,18,18,1,160,15,1,1,15,32,15, +1,1,15,32,1,144,1,15,32,15,1,1,15,32,15,1,254,112,15,1,1,15,32,15,1,1,15,32,1,144,1,15, +32,15,1,1,15,32,15,1,176,37,25,25,1,1,25,25,37,37,25,25,1,1,25,25,37,1,64,1,15,16,1,15, +15,1,1,15,32,15,1,30,27,5,13,13,17,254,221,20,14,13,1,1,13,14,20,1,35,17,13,13,5,27,93,10, +10,93,254,98,96,27,18,18,1,1,18,18,27,96,1,64,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64, +15,1,1,15,64,48,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15,1,1,15,64,1,56,1,25,25, +37,37,25,25,1,1,25,25,37,37,25,25,1,0,0,0,0,2,0,0,255,192,1,254,1,192,0,19,0,31,0,0, +55,7,6,21,20,31,1,22,51,50,63,1,54,53,52,39,38,35,34,7,1,7,23,7,22,23,22,23,55,51,55,39, +128,117,11,11,53,11,15,15,11,117,22,22,23,29,30,23,1,63,128,1,83,10,9,9,6,82,62,95,63,169,117,11, +15,15,11,53,11,11,117,23,30,29,23,22,22,1,23,96,62,83,6,9,9,10,83,128,64,0,0,0,0,4,0,0, +255,193,2,128,1,192,0,11,0,24,0,50,0,75,0,0,19,51,53,35,6,7,6,7,22,23,22,23,3,22,23,49, +22,23,51,53,35,34,7,6,7,37,34,7,49,6,7,48,35,6,7,6,35,21,23,22,23,22,55,54,55,54,39,38, +39,38,35,19,38,7,6,15,1,21,50,23,22,23,22,23,22,23,22,51,22,55,54,55,54,39,38,39,192,32,32,27, +18,18,1,1,18,18,27,192,1,18,18,27,32,32,27,18,18,1,1,82,27,28,28,22,1,17,21,22,44,58,39,41, +49,48,82,34,34,1,2,51,51,70,153,48,49,41,39,58,41,21,22,15,3,3,22,28,28,27,70,51,51,2,1,34, +34,82,1,33,127,1,18,18,26,27,18,18,1,255,0,27,18,18,1,127,18,18,27,128,9,8,14,14,10,9,128,16, +12,3,4,10,18,34,33,36,48,24,24,1,24,10,4,3,12,16,127,9,8,11,1,2,15,8,8,2,24,24,48,34, +34,33,19,0,0,3,0,0,255,192,2,0,1,192,0,52,0,70,0,88,0,0,37,21,6,7,6,7,35,53,38,39, +6,7,21,35,53,38,39,6,7,21,35,38,39,38,39,53,52,49,38,39,38,39,54,55,54,55,54,55,22,23,22,23, +22,23,20,7,6,7,48,51,20,57,1,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,54,55, +49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,160,1,13,14,20,48,1,15,15,1,64,1,15,15,1,48, +20,14,13,1,44,26,25,1,1,34,34,58,57,72,72,57,58,34,34,1,26,26,45,1,255,0,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,192,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,48,64,20,14,13, +1,48,15,1,1,15,48,48,15,1,1,15,48,1,13,14,20,64,1,31,45,46,53,63,50,51,29,30,1,1,30,29, +51,50,63,53,46,45,31,1,208,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,128,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,0,0,0,6,0,0,255,192,2,0,1,192,0,8,0,35,0,46,0,51,0,69, +0,92,0,0,55,22,23,51,39,35,6,7,21,19,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55, +54,55,38,39,38,39,38,39,17,38,39,49,38,39,54,55,1,6,7,55,51,21,35,39,23,39,51,54,55,53,38,39, +35,39,54,55,22,23,22,23,6,7,39,38,39,38,43,1,6,21,22,23,22,23,22,23,22,59,1,54,53,38,39,38, +39,96,1,15,118,96,22,15,1,160,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58, +57,72,81,55,54,2,1,35,1,11,48,63,45,83,51,32,111,47,35,15,1,1,15,131,124,48,63,81,55,54,2,1, +35,91,26,6,1,6,17,8,4,18,17,25,25,6,2,6,16,8,4,17,18,24,144,15,1,96,1,15,64,1,48,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,64,2,54,55,81,63,48,254, +245,35,1,192,32,32,111,47,1,15,64,15,1,124,35,1,2,54,55,81,63,48,239,2,24,6,1,8,24,15,15,1, +2,24,6,1,8,24,15,15,1,0,0,0,0,2,0,15,255,192,2,48,1,192,0,32,0,61,0,0,37,6,35,38, +39,6,7,38,39,6,7,38,39,6,7,34,39,38,39,38,63,1,54,51,33,50,31,1,22,7,6,7,49,23,54,55, +21,6,7,6,7,33,38,39,38,39,53,22,23,49,22,51,50,55,21,33,53,22,51,50,55,49,1,240,6,7,40,25, +25,40,40,25,25,40,40,25,25,41,6,6,42,16,15,21,58,8,16,1,100,16,8,58,21,15,16,42,4,5,7,1, +18,18,27,254,192,27,18,18,1,6,6,8,8,19,17,1,64,17,18,9,8,225,1,1,28,28,1,1,28,28,1,1, +28,28,1,1,8,37,37,37,91,13,13,91,37,37,37,8,32,1,1,195,27,18,18,1,1,18,18,27,195,1,1,1, +5,133,133,5,1,0,0,0,0,3,0,0,255,192,2,128,1,192,0,21,0,38,0,50,0,0,19,52,63,1,54,55, +33,22,31,1,22,21,20,7,6,35,33,34,39,38,53,49,23,51,21,51,53,51,21,6,7,6,7,35,38,39,38,39, +53,33,51,17,20,7,6,35,34,39,38,53,17,0,6,76,14,26,1,140,26,14,76,6,11,10,16,253,202,16,10,11, +64,64,192,64,1,13,14,20,224,20,14,13,1,1,192,64,9,9,14,14,9,9,1,37,11,9,114,20,1,1,20,114, +9,11,16,10,11,11,10,16,69,160,160,240,20,14,13,1,1,13,14,20,240,255,0,14,9,9,9,9,14,1,0,0, +0,3,0,0,0,0,2,0,1,128,0,19,0,39,0,58,0,0,19,52,55,49,54,51,33,50,23,22,21,20,7,6, +35,33,34,39,38,53,23,52,55,49,54,51,33,50,23,22,21,20,7,6,35,33,34,39,38,53,5,33,34,39,38,53, +52,55,54,51,33,50,23,22,21,20,7,6,35,0,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,64,9, +9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,1,96,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9, +14,1,96,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,192,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,6,0,16,255,208,1,240,1,176,0,4,0,9,0,14,0,41,0,198, +0,203,0,0,55,7,23,55,39,55,39,7,23,55,7,23,55,39,7,19,6,7,49,6,7,49,6,7,22,23,22,23, +22,23,54,55,54,55,54,55,38,39,38,39,38,39,19,7,6,47,1,7,23,55,54,31,1,22,15,1,23,22,15,1, +6,47,1,7,6,47,1,38,63,1,39,7,23,22,15,1,6,47,1,7,6,47,1,38,63,1,39,7,23,22,15,1, +6,47,1,7,6,47,1,38,63,1,39,38,63,1,54,31,1,55,39,7,6,47,1,38,63,1,39,38,63,1,54,31, +1,55,39,7,6,47,1,38,63,1,39,38,63,1,54,31,1,55,54,31,1,22,15,1,23,55,39,38,63,1,54,31, +1,55,54,31,1,22,15,1,23,55,39,38,63,1,54,31,1,55,54,31,1,22,15,1,23,22,15,1,6,47,1,7, +23,55,54,31,1,22,15,1,23,22,7,39,23,55,39,7,188,45,45,45,45,113,45,45,45,45,90,45,45,46,44,45, +67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,187,12,5,6,28,45,34,16, +6,6,11,5,5,17,17,5,5,11,6,6,16,17,6,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6,6, +11,5,5,28,45,34,17,5,5,11,6,6,16,16,6,6,11,5,5,17,17,5,5,11,6,6,16,33,45,28,6,5, +12,4,4,29,29,4,4,12,5,6,28,46,34,17,6,6,11,5,5,17,17,5,5,11,6,6,17,17,5,6,11,5, +5,17,34,45,28,5,5,11,6,6,28,28,6,6,11,5,5,28,45,34,17,5,5,11,6,5,17,17,6,6,11,5, +5,17,17,5,5,11,6,6,17,34,46,28,6,5,12,4,4,29,29,4,4,164,45,45,45,45,237,45,45,45,45,23, +45,45,45,45,136,45,45,45,45,1,52,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54, +32,32,1,254,232,11,5,5,28,45,34,17,5,5,11,6,5,17,17,6,6,11,5,5,17,17,5,5,11,6,6,17, +34,46,28,6,5,12,4,4,29,29,4,4,12,5,6,28,46,34,17,6,6,11,5,5,17,17,5,5,11,6,6,17, +17,5,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6,6,11,5,5,28,45,34,17,5,5,11,6,6,17, +16,6,6,11,5,5,17,17,5,5,11,6,6,16,34,45,28,6,5,12,4,4,29,29,4,4,12,5,6,28,46,34, +17,6,6,11,5,5,17,17,5,5,11,6,6,17,17,5,6,11,5,5,17,34,45,28,5,5,11,6,6,28,28,6, +6,40,45,45,45,45,0,0,0,3,0,0,255,224,2,0,1,160,0,42,0,47,0,76,0,0,1,39,38,43,1,53, +38,39,38,39,35,6,7,6,7,21,35,34,15,1,6,29,1,51,53,54,55,51,22,23,21,51,53,54,55,51,22,23, +21,51,53,52,47,1,35,53,51,21,23,6,7,35,38,39,53,35,21,6,7,35,38,39,53,35,21,20,23,22,51,33, +50,55,54,61,1,35,21,1,247,46,9,13,51,1,13,14,20,160,20,14,13,1,51,13,9,46,9,128,1,15,32,15, +1,128,1,15,32,15,1,128,9,167,160,160,48,1,15,32,15,1,128,1,15,32,15,1,128,9,9,14,1,192,14,9, +9,128,1,9,46,9,48,20,14,13,1,1,13,14,20,48,9,46,9,13,99,32,15,1,1,15,32,32,15,1,1,15, +32,99,13,9,55,48,48,240,15,1,1,15,32,32,15,1,1,15,32,112,14,9,9,9,9,14,112,32,0,1,0,0, +255,192,2,128,1,176,0,47,0,0,1,20,15,1,6,35,34,47,1,17,6,7,6,7,35,38,39,38,39,17,7,6, +39,34,47,1,38,53,52,63,1,54,59,1,22,23,22,23,54,55,54,55,51,50,31,1,22,21,2,128,7,50,10,15, +11,9,58,1,13,14,20,224,20,14,13,1,59,8,11,15,10,50,7,12,135,20,24,35,6,26,26,36,36,26,26,6, +34,25,20,135,12,1,29,10,10,61,12,7,46,254,251,20,14,13,1,1,13,14,20,1,5,46,7,1,12,60,10,10, +15,10,106,16,35,22,22,1,1,22,22,35,16,106,10,15,0,3,0,0,255,192,1,63,1,192,0,17,0,77,0,95, +0,0,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,6,35,49,34,21,7,6,15,1,6,7, +6,39,38,39,38,63,1,54,63,1,54,51,50,23,22,31,2,22,23,22,7,6,7,6,47,1,38,47,1,7,23,22, +31,1,22,7,6,7,6,39,38,47,2,38,63,1,7,55,22,31,1,7,6,15,1,6,35,34,39,38,53,52,63,1, +1,0,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,129,1,1,1,11,24,10,1,6,11,12,13,12,5, +5,4,2,20,47,11,31,35,34,27,27,14,14,22,12,4,4,5,7,12,12,12,27,16,7,9,20,50,8,3,23,3, +7,6,13,13,12,11,4,21,71,23,9,17,58,25,3,4,40,14,4,7,61,10,13,13,10,9,9,60,1,144,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,151,1,1,4,11,24,4,12,5,5,4,6,11,12,13,4,47,22, +5,14,19,18,31,37,10,7,12,12,12,12,4,4,5,14,8,16,23,65,54,9,12,92,14,10,11,4,3,7,6,13, +88,77,27,33,64,199,62,4,4,45,36,9,7,62,9,9,10,13,13,10,59,0,0,0,0,2,0,0,255,224,2,0, +1,160,0,35,0,53,0,0,1,50,23,49,22,21,20,7,6,35,33,6,7,22,23,33,22,23,22,23,21,6,7,6, +7,33,38,39,38,39,17,54,55,54,55,33,3,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,1,192, +14,9,9,9,9,14,254,144,15,1,1,15,1,112,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27, +1,128,32,14,9,9,9,9,14,14,9,9,9,9,14,1,160,9,9,14,14,9,9,1,15,15,1,1,18,18,27,224, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,254,208,9,9,14,14,9,9,9,9,14,14,9,9,0,4,0,0, +255,192,2,0,1,192,0,26,0,53,0,78,0,103,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,38,39,49,38,39,6,7,6,7,6,23,22,55,54,55,54,51,50,23,22, +23,22,55,54,39,49,39,50,55,49,54,53,52,53,23,22,55,54,47,1,38,7,6,31,1,6,7,22,23,22,51,63, +1,54,39,38,15,1,6,23,22,63,1,6,21,22,23,22,51,50,55,54,53,52,39,49,2,0,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,172,12,21,21,30,30,21,21,12,9,10,11,12,9, +15,14,21,22,15,15,9,11,12,10,9,164,14,9,9,11,14,6,3,13,96,14,6,3,13,31,9,1,1,9,9,13, +183,30,13,3,6,14,96,13,3,6,14,12,1,1,9,9,13,14,9,9,9,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,117,14,11,11,1,1,11,11,14,11,12,9,10,10,9,8,8,9, +10,10,9,12,11,101,9,9,14,2,2,3,3,13,14,6,32,3,13,14,6,10,9,14,14,9,9,55,10,6,14,13, +3,32,6,14,13,3,4,3,2,14,9,9,9,9,14,14,9,0,0,0,0,2,0,0,255,224,2,0,1,160,0,19, +0,51,0,0,1,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,5,33,17,50,23,22,21,20, +7,6,43,1,53,38,39,38,39,6,7,6,7,21,35,34,39,38,53,52,55,54,51,17,1,224,14,9,9,9,9,14, +254,64,14,9,9,9,9,14,1,192,254,64,1,192,14,9,9,9,9,14,128,1,27,27,41,41,27,27,1,128,14,9, +9,9,9,14,1,160,9,9,14,14,9,9,9,9,14,14,9,9,96,254,224,9,9,14,14,9,9,128,41,27,27,1, +1,27,27,41,128,9,9,14,14,9,9,1,32,0,0,0,0,9,0,0,255,192,1,192,1,192,0,10,0,16,0,22, +0,32,0,38,0,64,0,82,0,94,0,100,0,0,19,6,7,49,6,7,51,38,39,38,39,23,38,39,22,23,51,21, +35,6,7,54,55,43,1,22,23,22,23,54,55,54,55,39,6,7,51,54,55,23,17,38,39,38,39,33,6,7,6,7, +17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,3,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54, +55,19,33,34,39,38,53,52,55,54,51,33,21,39,38,39,35,22,23,240,6,8,7,2,46,2,7,8,6,94,9,44, +12,2,39,39,2,12,44,9,71,46,2,7,8,6,6,8,7,2,64,43,10,39,2,12,249,1,13,14,20,254,208,41, +27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,208,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37, +54,144,254,224,14,9,9,9,9,14,1,32,185,12,2,39,10,43,1,95,6,20,20,33,33,20,20,6,79,49,21,29, +41,32,41,29,21,49,33,20,20,6,6,20,20,33,102,21,49,41,29,230,1,32,20,14,13,1,1,27,27,41,254,192, +41,27,27,1,9,9,14,18,9,81,14,22,1,16,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,254,128, +9,9,14,14,9,9,64,170,29,41,49,21,0,4,0,0,255,192,1,127,1,192,0,97,0,115,0,132,0,151,0,0, +37,54,55,49,54,55,54,55,54,55,54,39,38,55,54,55,54,55,38,39,38,39,38,55,54,39,38,39,38,39,38,39, +38,39,38,7,6,39,38,39,38,39,6,7,6,7,6,39,38,7,6,7,6,7,6,7,6,7,6,23,22,7,6,7, +6,7,22,23,22,23,22,7,6,23,22,23,22,23,22,23,22,23,22,55,54,23,22,23,22,23,54,55,54,55,54,23, +22,55,39,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,7,6,23,22,63,1,23,22,51,48,51,54, +63,1,38,39,7,37,6,7,23,22,23,48,49,48,51,50,63,1,23,22,55,54,47,1,1,32,11,6,5,7,8,10, +15,8,6,2,2,3,3,6,10,1,1,10,7,3,2,1,2,6,8,14,11,8,7,5,6,11,12,16,12,10,9,9, +13,14,14,13,9,10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2,3,3,7,10,1,1,10,7,3,3,2, +2,6,8,14,11,8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9,10,10,12,16,12,176,1,22,23,34,34, +23,22,1,1,22,23,34,34,23,22,1,110,5,9,9,14,45,21,7,15,1,15,6,34,83,56,32,1,92,56,83,34, +6,15,1,15,7,21,45,14,9,9,5,32,90,8,15,10,8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9, +10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2,3,3,6,10,2,1,10,7,3,3,2,2,6,8,15,10, +8,7,5,6,11,12,16,12,10,10,9,13,14,14,13,9,10,10,12,16,12,11,6,5,7,8,10,15,8,6,2,2, +3,3,7,10,1,1,10,7,3,2,1,2,6,166,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,241,13, +11,11,2,9,42,13,1,14,82,9,55,82,82,55,9,82,14,1,13,42,9,2,11,11,13,82,0,0,0,2,0,0, +0,0,2,64,1,128,0,22,0,48,0,0,37,6,7,49,6,7,33,34,47,1,38,53,52,63,1,54,51,33,22,23, +22,23,17,37,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,49,2,64,1, +18,18,27,254,205,26,19,151,9,9,151,19,26,1,51,27,18,18,1,254,207,47,47,14,14,17,16,48,47,17,16,15, +15,46,46,15,15,16,17,47,48,16,17,14,14,64,27,18,18,1,19,150,10,13,13,10,150,19,1,18,18,27,255,0, +176,48,47,17,16,15,15,46,46,15,15,16,17,47,48,16,17,14,14,47,47,14,14,17,16,0,0,0,0,4,0,0, +255,224,2,128,1,160,0,103,0,108,0,113,0,118,0,0,1,22,23,49,22,23,21,51,54,55,22,23,22,23,6,7, +6,7,38,39,35,22,23,22,23,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,38,39, +38,39,6,7,35,38,39,6,7,6,7,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51, +54,55,54,55,35,6,7,38,39,38,39,54,55,54,55,22,23,51,53,54,55,54,55,51,7,51,53,35,21,7,21,51, +53,35,5,53,35,21,51,1,96,20,14,13,1,118,18,40,27,18,18,1,1,18,18,27,40,18,66,44,28,27,5,4, +20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,3,5,29,28,45,14,26,64,26,14,45,28,29,5,3, +20,14,13,1,1,13,14,20,64,20,14,13,1,1,13,14,20,5,4,27,28,45,67,18,40,27,18,18,1,1,18,18, +27,40,18,118,1,13,14,20,64,56,48,48,208,48,48,1,208,48,48,1,160,1,13,14,20,4,34,2,1,18,18,27, +27,18,18,1,2,34,30,46,47,57,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,51,39,39,20, +20,1,1,20,20,39,39,51,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,57,47,46,30,34,2, +1,18,18,27,27,18,18,1,2,34,4,20,14,13,1,104,48,48,240,48,48,48,48,48,0,2,0,32,255,192,1,224, +1,192,0,47,0,58,0,0,5,54,55,54,55,38,39,55,23,22,63,1,54,47,1,38,15,1,6,31,1,7,38,39, +53,51,54,55,53,38,39,35,6,7,23,22,23,51,21,6,7,6,7,22,23,22,23,51,39,55,53,51,21,23,22,23, +33,54,55,1,79,36,20,24,1,1,26,43,9,12,11,11,10,10,52,12,11,11,10,10,9,39,18,21,16,15,1,1, +15,225,14,2,1,1,15,16,44,26,25,1,1,25,19,37,221,183,24,96,24,37,20,254,255,19,37,64,1,32,42,53, +55,44,43,9,10,10,11,11,12,52,10,10,11,11,12,9,39,17,12,154,2,14,32,15,1,2,14,32,15,1,154,25, +44,43,54,53,42,32,1,253,13,182,182,13,23,38,38,23,0,3,0,0,255,192,1,128,1,192,0,18,0,42,0,51, +0,0,19,51,22,23,22,23,21,33,53,54,55,54,55,51,23,55,51,23,55,19,21,6,7,6,7,35,21,6,7,6, +7,38,39,38,39,53,35,38,39,38,39,53,33,7,54,55,38,39,6,7,22,23,224,112,20,14,13,1,254,128,1,13, +14,20,16,32,32,32,32,32,160,1,18,18,27,64,1,18,18,27,27,18,18,1,64,27,18,18,1,1,128,192,15,1, +1,15,15,1,1,15,1,192,1,13,14,20,208,208,20,14,13,1,64,64,64,64,254,224,32,27,18,18,1,64,27,18, +18,1,1,18,18,27,64,1,18,18,27,32,176,1,15,15,1,1,15,15,1,0,0,0,0,4,0,0,255,192,1,192, +1,192,0,42,0,64,0,82,0,100,0,0,19,22,23,49,22,23,17,20,7,6,35,21,20,7,6,43,1,34,39,38, +61,1,35,21,20,7,6,43,1,34,39,38,61,1,34,39,38,53,17,54,55,54,55,3,20,23,49,22,51,33,50,55, +54,61,1,52,39,38,35,33,34,7,6,29,1,23,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,33, +50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,224,96,63,63,2,9,9,14,9,9,14,32,14,9,9, +192,9,9,14,32,14,9,9,14,9,9,2,63,63,96,160,9,9,14,1,0,14,9,9,9,9,14,255,0,14,9,9, +16,14,9,9,9,9,14,14,9,9,9,9,14,1,32,14,9,9,9,9,14,14,9,9,9,9,14,1,192,1,22,23, +34,254,176,14,9,9,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32,9,9,14,1,80,34,23,22,1,255, +0,14,9,9,9,9,14,128,14,9,9,9,9,14,128,144,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14, +9,9,9,9,14,14,9,9,0,1,0,31,255,192,2,32,1,192,0,108,0,0,37,20,7,6,7,6,7,34,35,22, +21,22,7,6,39,34,39,38,39,21,6,7,38,39,53,6,7,6,35,6,39,38,55,52,55,34,35,38,39,38,39,34, +49,38,53,52,55,54,55,54,55,38,39,38,53,38,55,54,51,50,51,22,49,50,23,22,23,53,54,55,54,55,54,55, +48,51,54,51,50,23,48,49,22,23,22,23,22,23,21,54,55,54,51,54,51,50,23,22,7,20,7,6,7,22,23,22, +23,22,21,2,32,8,4,37,37,56,9,8,16,3,7,6,10,2,19,20,28,2,22,22,2,28,20,19,2,10,6,7, +3,17,9,9,51,36,36,9,1,9,9,1,21,20,34,47,19,19,1,6,4,7,1,1,1,6,48,48,59,1,14,15, +15,15,2,1,4,9,9,5,2,15,15,15,14,1,58,48,49,6,1,2,7,4,6,1,19,19,47,34,20,21,2,8, +74,10,5,2,14,13,2,36,3,9,7,7,3,8,8,18,43,22,2,2,21,43,18,8,8,3,7,7,9,5,35,1, +12,12,6,5,10,9,5,1,9,8,7,60,50,50,6,9,6,5,1,17,18,45,5,59,49,48,29,29,4,7,7,4, +29,29,49,48,59,5,45,18,17,1,5,6,9,6,50,50,60,7,8,9,1,5,9,0,0,2,0,0,255,224,1,192, +1,160,0,25,0,51,0,0,55,6,35,49,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20, +15,1,21,6,35,49,34,47,1,38,53,52,55,54,51,50,31,1,55,54,51,50,23,22,21,20,7,1,183,10,13,13, +10,80,9,9,10,13,13,10,56,138,10,13,13,10,9,9,160,10,13,13,10,128,9,9,10,13,13,10,104,234,10,13, +13,10,9,9,255,0,201,9,9,80,10,13,13,10,9,9,58,138,9,9,10,13,13,10,160,224,9,9,128,10,13,13, +10,9,9,106,234,9,9,10,13,13,10,255,0,0,0,0,0,2,0,0,255,192,2,63,1,192,0,28,0,60,0,0, +5,35,53,55,54,39,38,39,33,6,7,6,31,1,21,35,34,7,6,21,22,23,51,54,55,54,39,38,35,19,6,7, +49,6,7,51,54,55,54,51,22,23,22,23,6,7,6,7,34,39,7,22,23,54,55,54,55,38,39,38,39,1,32,48, +169,11,6,6,17,254,146,17,6,6,11,169,48,14,9,9,2,13,191,14,1,2,9,8,14,144,48,36,36,15,52,13, +22,21,27,41,26,27,1,1,27,27,40,21,18,36,34,41,61,40,41,1,1,41,40,61,16,125,169,13,14,14,1,1, +14,14,13,169,125,9,9,14,15,1,1,15,14,9,9,1,208,1,26,26,43,22,13,13,1,27,27,41,41,27,27,1, +9,36,20,1,2,40,41,61,61,41,40,2,0,2,0,0,0,0,1,255,1,128,0,24,0,35,0,0,1,53,51,54, +55,38,39,35,6,7,20,23,22,59,1,21,6,7,6,7,33,38,39,38,39,23,33,6,7,22,23,33,54,55,38,39, +1,24,16,22,2,2,22,81,21,2,7,7,9,17,86,56,56,2,1,192,2,56,56,86,208,254,48,22,2,2,21,1, +208,22,2,1,22,1,47,33,2,22,22,2,2,21,10,7,8,33,11,62,61,89,89,61,62,11,255,2,21,23,2,2, +21,23,2,0,0,4,0,16,255,209,1,240,1,175,0,30,0,48,0,66,0,84,0,0,37,39,38,47,1,38,47,1, +38,15,1,6,15,1,6,31,1,22,31,1,22,31,1,22,63,1,54,63,1,54,39,5,34,39,49,38,53,52,55,54, +51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38, +53,52,55,54,51,50,23,22,21,20,7,6,35,1,239,12,6,29,51,29,39,72,40,35,65,36,19,32,18,6,11,6, +29,51,29,39,72,40,36,64,36,19,32,19,6,254,193,14,8,9,9,9,13,13,9,9,9,8,14,32,14,8,9,9, +9,13,14,8,9,9,9,13,160,14,8,9,9,9,13,13,9,9,9,8,14,193,72,39,29,51,29,6,11,6,17,34, +18,36,64,36,40,72,39,29,51,28,7,11,6,17,34,18,36,64,36,40,112,9,9,13,14,8,9,9,9,13,13,9, +9,159,9,9,13,13,9,9,9,9,13,13,9,9,127,9,9,13,14,8,9,9,9,13,13,9,9,0,0,4,0,16, +255,209,1,240,1,176,0,32,0,50,0,68,0,86,0,0,37,38,39,49,38,39,38,39,38,39,38,15,1,6,15,1, +6,31,1,22,31,1,22,31,1,22,63,1,54,63,1,54,39,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20, +7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50, +23,22,21,20,7,6,35,1,239,51,33,34,1,51,33,34,2,39,36,64,36,19,32,18,6,11,6,29,51,29,39,72, +40,36,64,36,19,33,17,5,254,193,14,9,9,9,9,14,14,9,9,9,9,14,32,14,9,9,9,9,14,14,9,9, +9,9,14,160,14,9,9,9,9,14,14,9,9,9,9,14,192,2,34,33,51,1,34,33,51,5,17,33,19,36,64,36, +40,72,39,29,51,29,6,11,6,17,34,18,36,64,36,39,111,9,9,13,13,9,9,9,9,13,13,9,9,159,9,9, +13,13,9,9,9,9,13,13,9,9,127,9,9,13,13,9,9,9,9,13,13,9,9,0,0,2,0,0,255,192,2,0, +1,192,0,28,0,57,0,0,55,51,21,35,38,39,38,39,17,35,34,39,38,53,52,55,54,59,1,53,52,55,54,51, +50,23,22,21,17,1,35,53,51,22,23,22,23,17,51,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +53,17,128,224,224,27,18,18,1,32,14,9,9,9,9,14,32,9,9,14,14,9,9,1,0,224,224,27,18,18,1,32, +14,9,9,9,9,14,32,9,9,14,14,9,9,64,64,1,18,18,27,1,0,9,9,14,14,9,9,32,14,9,9,9, +9,14,254,160,1,0,64,1,18,18,27,255,0,9,9,14,14,9,9,32,14,9,9,9,9,14,1,96,0,9,0,0, +0,0,2,128,1,128,0,20,0,33,0,44,0,57,0,70,0,83,0,96,0,109,0,120,0,0,1,33,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,5,54,55,51,22,23,21,6,7,35,38,39,53,5,33,38,39, +54,55,33,22,23,20,7,39,53,54,55,51,22,23,21,6,7,35,38,39,51,53,54,55,51,22,23,21,6,7,35,38, +39,51,53,54,55,51,22,23,21,6,7,35,38,39,51,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,23,35,38,39,54,55,51,22,23,6,7,2,64,254,0,27,18,18,1,1,18,18,27,2, +0,27,18,18,1,1,18,18,27,254,0,1,7,16,7,1,1,7,16,7,1,1,16,255,0,15,1,2,13,1,0,15, +1,15,208,1,7,16,7,1,1,7,16,7,1,64,1,7,16,7,1,1,7,16,7,1,64,1,7,16,7,1,1,7, +16,7,1,96,1,7,16,7,1,1,7,16,7,1,1,16,254,16,1,1,16,254,16,1,208,160,15,1,1,15,160,15, +1,1,15,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,232,7,1,1,7,16,7, +1,1,7,16,88,1,15,15,1,1,15,15,1,72,16,7,1,1,7,16,7,1,1,7,16,7,1,1,7,16,7,1, +1,7,16,7,1,1,7,16,7,1,1,7,7,1,1,7,16,7,1,1,7,16,74,16,2,2,16,92,16,2,2,16, +92,146,1,15,15,1,1,15,15,1,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,69,0,94,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54, +55,38,39,38,39,6,7,6,7,22,23,22,23,3,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15, +1,39,38,7,6,23,51,23,7,6,23,22,63,1,23,22,55,54,47,1,55,54,39,38,15,1,39,38,7,6,23,0, +1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,27,18,18,1,1,18, +18,27,27,18,18,1,1,18,18,27,155,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11, +11,10,10,192,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,192,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,160,1,18,18,27,27,18,18,1,1,18, +18,27,27,18,18,1,1,5,37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11, +37,37,11,11,10,10,36,36,10,10,11,11,37,37,11,11,10,10,36,36,10,10,11,11,0,3,0,0,255,192,2,0, +1,192,0,64,0,82,0,97,0,0,1,20,7,23,6,7,39,35,7,22,51,50,55,54,55,54,55,54,23,22,23,22, +7,6,7,6,7,34,39,7,6,15,1,6,39,38,61,1,52,63,1,38,39,38,55,54,55,54,23,22,23,22,23,55, +38,53,54,55,54,55,22,23,22,23,49,7,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,19,54,55, +23,22,29,1,20,7,6,47,1,38,47,1,1,96,9,53,36,52,52,1,67,32,36,53,46,45,31,9,12,13,11,10, +2,1,8,40,59,58,68,53,48,56,8,12,56,8,7,8,6,60,19,16,8,1,2,10,11,13,12,9,9,9,70,9, +1,27,27,41,41,27,27,1,96,14,9,9,9,9,14,14,9,9,9,9,14,116,50,40,44,6,8,7,8,56,12,8, +41,1,96,22,18,91,39,15,89,118,10,23,22,40,10,1,2,9,9,12,13,11,50,29,28,1,18,98,12,7,27,4, +4,5,9,55,13,11,104,17,20,11,13,12,9,9,2,1,10,12,9,120,18,22,41,27,27,1,1,27,27,41,32,9, +9,14,14,9,9,9,9,14,14,9,9,254,246,19,34,76,11,13,55,9,5,4,4,27,7,12,70,0,0,2,0,0, +255,224,1,255,1,159,0,58,0,94,0,0,1,55,54,39,38,15,1,38,39,38,35,48,49,48,49,34,7,6,7,6, +7,6,7,21,22,23,53,54,55,22,23,21,22,23,53,54,55,48,49,48,49,22,23,21,54,55,53,54,55,22,23,21, +54,55,53,54,39,38,39,7,48,57,1,48,49,38,39,38,39,54,55,54,55,48,49,48,49,50,23,7,6,23,22,51, +50,63,1,22,23,22,23,6,7,6,7,1,175,70,17,10,14,19,107,38,31,31,12,15,40,41,46,46,33,33,2,3, +68,2,22,22,1,53,60,2,22,22,2,62,49,2,22,22,2,69,2,1,22,22,35,176,88,59,58,2,2,59,58,88, +26,25,63,17,10,8,12,7,6,109,40,23,22,1,3,58,59,89,1,70,46,14,19,17,10,70,7,1,2,2,3,11, +10,23,23,40,160,47,31,102,22,2,2,22,119,14,3,104,22,2,2,22,104,3,14,119,22,2,2,22,102,31,47,160, +32,21,21,12,151,1,18,19,27,27,18,17,1,2,40,14,19,12,4,71,8,14,13,16,27,19,18,1,0,5,0,0, +255,224,2,64,1,160,0,28,0,42,0,55,0,71,0,85,0,0,1,34,7,49,6,7,49,6,7,21,22,23,22,23, +22,51,50,55,54,55,54,55,53,38,39,38,39,38,35,7,6,7,38,39,38,39,54,55,54,55,23,22,7,23,6,39, +54,55,54,51,50,23,22,23,6,35,55,6,7,49,6,7,38,39,38,39,53,54,51,50,23,21,23,38,39,38,63,1, +22,23,22,23,6,7,6,7,1,32,80,65,65,39,38,1,1,38,39,65,65,80,80,65,65,39,38,1,1,38,39,65, +65,80,83,7,21,59,34,35,1,1,33,34,56,26,15,8,83,32,29,6,17,16,22,22,16,17,6,29,32,64,1,18, +18,27,27,18,18,1,31,33,33,31,47,21,7,8,15,26,56,34,33,1,1,35,35,58,1,160,17,18,28,29,36,192, +36,29,28,18,17,17,18,28,29,36,192,36,29,28,18,17,158,26,15,10,19,19,23,23,18,18,10,44,26,29,50,1, +4,20,12,13,13,12,20,3,144,27,18,18,1,1,18,18,27,13,3,3,13,135,15,26,29,27,44,10,19,18,23,23, +19,19,10,0,0,1,255,255,255,192,2,0,1,192,0,37,0,0,37,7,51,6,15,1,51,6,7,6,39,7,6,39, +38,63,1,54,39,38,15,1,38,55,54,55,54,55,54,55,54,23,22,7,6,7,6,7,1,211,116,94,11,14,133,86, +44,66,65,90,68,17,17,14,14,254,7,9,11,11,169,13,44,44,73,73,73,73,45,14,10,10,1,2,10,10,23,207, +47,22,21,53,40,16,17,20,68,14,14,17,17,253,11,10,10,10,168,114,71,71,39,38,15,15,2,1,10,10,14,35, +56,56,61,0,0,5,0,0,255,192,1,128,1,192,0,3,0,26,0,39,0,52,0,95,0,0,1,21,51,39,7,53, +35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,54,55,51,22,23,21,6,7,35,38, +39,53,21,54,55,51,22,23,21,6,7,35,38,39,53,23,22,23,6,7,35,38,39,38,7,38,15,1,6,43,1,38, +47,1,7,6,7,35,38,39,54,55,51,50,63,1,54,55,22,31,1,54,23,22,23,22,59,1,1,0,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,160,1,7,80,7,1,1,7,80,7,1,1,7,80, +7,1,1,7,80,7,1,240,15,1,1,15,47,26,13,6,4,5,5,8,5,9,1,10,4,17,11,11,30,12,15,1, +1,15,12,8,3,18,6,17,17,6,14,16,20,20,10,3,7,47,1,192,128,128,128,128,1,13,14,20,254,96,20,14, +13,1,1,13,14,20,1,48,9,9,14,56,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7, +16,248,1,15,15,1,1,23,8,2,1,7,15,9,1,10,50,32,27,2,1,15,15,1,8,54,16,1,1,16,41,12, +4,4,19,6,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,49,0,0,1,35,53,23,7,51,17,6,7,6, +7,33,38,39,38,39,17,54,55,54,55,51,21,20,23,22,51,15,1,53,38,39,6,7,21,39,38,35,34,7,6,31, +1,22,63,1,54,39,38,7,1,128,128,128,128,128,1,13,14,20,254,224,20,14,13,1,1,13,14,20,176,9,9,14, +1,39,2,22,22,2,40,6,10,10,7,14,14,80,17,17,80,14,14,17,17,1,64,128,128,32,254,208,20,14,13,1, +1,13,14,20,1,160,20,14,13,1,128,14,9,9,135,39,102,22,2,2,22,102,39,7,7,17,17,80,14,14,80,17, +17,14,14,0,0,3,0,0,255,192,2,63,1,192,0,29,0,33,0,53,0,0,55,54,55,51,53,35,34,39,38,61, +1,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,35,38,39,19,21,51,39,1,39,38,7,6,31,1,35, +21,51,7,6,21,20,23,22,63,1,54,39,192,2,22,168,128,14,9,9,176,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,168,22,2,64,128,128,1,56,80,17,17,14,14,40,110,110,39,7,7,17,17,80,14,15,136,22,2,128,9, +9,14,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,128,2,22,1,56,128,128,254,217,80,14,14,17,17,39, +48,39,7,10,10,7,14,14,80,17,17,0,0,3,0,0,255,192,2,0,1,192,0,3,0,45,0,53,0,0,1,21, +51,39,7,53,35,6,7,6,7,21,51,39,38,55,54,31,1,22,15,1,6,39,38,53,52,63,1,35,21,22,23,22, +23,33,54,55,54,55,17,35,34,39,38,53,5,6,7,22,23,51,53,35,1,128,128,128,32,176,20,14,13,1,174,39, +14,14,17,17,80,14,14,80,17,17,7,7,39,174,1,13,14,20,1,32,20,14,13,1,127,14,10,9,254,184,22,2, +2,22,104,104,1,192,128,128,128,128,1,13,14,20,240,39,17,17,14,14,80,17,17,80,14,14,7,10,10,7,39,128, +20,14,13,1,1,13,14,20,1,48,9,9,14,160,2,22,22,2,48,0,0,7,0,0,255,192,1,128,1,192,0,3, +0,8,0,31,0,44,0,57,0,70,0,83,0,0,1,21,51,39,19,35,21,51,53,39,53,35,6,7,6,7,17,22, +23,22,23,33,54,55,54,55,17,35,34,39,38,53,39,54,55,51,22,23,21,6,7,35,38,39,53,21,54,55,51,22, +23,21,6,7,35,38,39,53,1,6,7,35,38,39,53,54,55,51,22,23,21,53,21,6,7,35,38,39,53,54,55,51, +22,23,1,0,128,128,32,192,192,64,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,160,1,7, +80,7,1,1,7,80,7,1,1,7,80,7,1,1,7,80,7,1,1,0,1,7,80,7,1,1,7,80,7,1,1,15, +224,15,1,1,15,224,15,1,1,192,128,128,255,0,64,64,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20, +1,48,9,9,14,56,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7,16,254,208,7,1,1, +7,16,7,1,1,7,16,200,96,15,1,1,15,96,15,1,1,15,0,0,0,5,0,0,255,192,1,128,1,192,0,3, +0,26,0,39,0,52,0,117,0,0,1,35,53,23,7,51,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51, +21,20,23,22,51,39,22,23,51,54,55,53,38,39,35,6,7,21,23,51,54,55,53,38,39,35,6,7,21,22,31,1, +39,38,39,38,55,54,55,54,23,22,23,22,55,54,39,38,39,53,38,39,6,7,21,6,7,6,23,22,23,48,49,23, +22,23,22,7,6,7,6,39,38,39,48,35,39,38,7,6,31,1,22,23,21,22,23,54,55,53,54,55,54,39,38,39, +1,128,128,128,128,128,1,13,14,20,254,224,20,14,13,1,1,13,14,20,176,9,9,14,192,1,7,80,7,1,1,7, +80,7,1,8,80,7,1,1,7,80,7,1,1,7,126,7,16,3,4,2,1,9,9,11,8,9,18,8,4,16,11,8, +2,18,18,2,35,7,3,19,19,16,6,21,4,4,2,1,9,9,11,11,12,1,4,18,8,4,17,4,12,13,2,18, +18,2,35,7,3,20,21,18,1,64,128,128,32,254,208,20,14,13,1,1,13,14,20,1,160,20,14,13,1,128,14,9, +9,72,7,1,1,7,16,7,1,1,7,16,72,1,7,16,7,1,1,7,16,7,1,157,2,5,3,4,2,6,2,2, +2,1,4,4,17,17,8,4,1,7,18,2,2,18,6,8,32,31,13,12,4,1,6,4,3,4,5,2,2,2,2,5, +2,4,17,18,7,2,4,3,7,18,2,2,18,6,8,32,31,13,13,4,0,4,0,0,255,192,1,128,1,192,0,7, +0,11,0,34,0,75,0,0,55,35,21,51,54,55,38,39,55,21,51,39,7,53,35,6,7,6,7,17,22,23,22,23, +33,54,55,54,55,17,35,34,39,38,53,31,1,22,15,1,23,22,15,1,6,47,1,7,6,47,1,38,63,1,39,35, +21,6,7,35,38,39,53,54,55,51,22,23,22,23,6,7,23,55,54,23,176,48,48,15,1,1,15,80,128,128,32,176, +20,14,13,1,1,13,14,20,1,32,20,14,13,1,127,14,10,9,69,11,9,9,30,30,9,9,11,12,11,30,30,11, +12,11,9,9,29,58,19,1,15,16,15,1,1,15,80,27,18,18,1,2,31,33,30,11,12,208,32,1,15,15,1,240, +128,128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,188,11,11,11,30,30,12,11,11, +10,10,30,30,10,10,11,11,12,30,59,48,15,1,1,15,160,15,1,1,18,18,27,38,18,33,29,10,10,0,0,0, +0,4,0,0,255,192,2,64,1,192,0,9,0,18,0,22,0,87,0,0,37,6,29,1,51,50,63,1,39,7,37,39, +38,15,1,23,55,54,39,37,21,51,39,17,38,39,38,7,38,15,1,6,43,1,38,47,1,7,6,7,35,38,39,54, +55,51,50,63,1,54,55,22,31,1,54,23,22,23,22,23,53,52,63,1,53,35,34,39,38,61,1,35,6,7,6,7, +17,22,23,22,23,33,54,55,54,55,53,35,1,37,5,62,7,5,157,68,158,1,20,32,18,18,28,68,27,16,15,254, +199,128,128,26,12,6,4,5,5,8,5,9,1,10,4,17,11,11,30,12,15,1,1,15,12,8,3,18,6,17,17,6, +14,16,20,20,10,3,6,9,119,128,14,9,9,176,20,14,13,1,1,13,14,20,1,32,20,14,13,1,128,106,5,7, +62,5,158,68,157,175,31,15,15,27,68,28,18,18,167,128,128,254,64,1,23,8,2,1,7,15,9,1,10,50,32,27, +2,1,15,15,1,8,54,16,1,1,16,41,12,4,4,19,5,1,69,13,10,117,47,9,9,14,128,1,13,14,20,254, +96,20,14,13,1,1,13,14,20,16,0,0,0,3,0,0,255,192,1,128,1,192,0,3,0,26,0,49,0,0,1,21, +51,39,7,53,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,35,34,39,38,53,23,6,35,34,47,1,21, +6,7,38,39,53,7,6,39,38,63,1,54,31,1,22,7,1,0,128,128,32,176,20,14,13,1,1,13,14,20,1,32, +20,14,13,1,127,14,10,9,64,6,10,10,7,39,2,22,22,2,39,17,17,14,14,80,17,17,80,14,15,1,192,128, +128,128,128,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,48,9,9,14,216,8,7,39,102,22,2,2,22,102, +39,14,14,17,17,80,14,14,80,17,16,0,0,2,0,3,255,194,1,239,1,192,0,31,0,53,0,0,19,55,54,51, +50,31,1,22,21,20,15,1,6,35,34,47,1,38,53,52,63,1,39,38,53,52,55,54,51,50,31,1,7,6,7,33, +55,54,47,1,38,15,1,23,22,21,20,7,6,35,34,47,1,7,168,53,22,29,29,22,151,21,21,190,30,38,38,30, +117,28,28,92,82,9,9,10,13,13,10,81,92,6,2,1,63,42,5,5,151,6,6,53,50,9,9,10,13,13,10,49, +92,1,101,53,21,21,151,22,29,29,22,190,29,29,117,30,38,38,30,93,80,10,13,13,10,9,9,82,182,7,7,41, +6,6,151,5,5,53,49,10,13,13,10,9,9,50,92,0,0,3,0,3,255,192,2,64,1,192,0,33,0,56,0,79, +0,0,19,54,51,49,50,31,1,55,54,51,50,31,1,22,21,20,15,1,6,35,34,47,1,38,53,52,63,1,39,38, +53,52,55,49,23,39,7,6,7,33,55,54,47,1,38,15,1,23,22,21,20,7,6,35,34,39,49,23,54,55,49,54, +55,54,51,50,23,22,23,22,23,6,7,6,7,38,39,38,39,49,41,10,13,13,10,81,53,22,29,29,22,151,21,21, +190,30,38,38,30,117,28,28,92,82,9,9,176,49,92,6,2,1,63,42,5,5,151,6,6,53,50,9,9,10,13,13, +10,231,1,18,17,15,5,8,8,5,15,17,18,1,1,18,18,27,27,18,18,1,1,183,9,9,82,53,21,21,151,22, +29,29,22,190,29,29,117,30,38,38,30,93,80,10,13,13,10,222,50,92,7,8,42,6,6,151,5,5,53,49,10,13, +13,10,9,9,217,21,32,32,24,7,7,24,32,32,21,27,18,18,1,1,18,18,27,0,0,6,255,255,255,192,2,0, +1,192,0,16,0,58,0,79,0,106,0,125,0,159,0,0,37,6,7,22,7,6,23,22,23,54,55,54,55,54,53,38, +47,1,6,7,49,6,21,22,7,6,23,22,23,22,55,54,55,54,39,52,55,54,55,22,23,22,23,22,7,6,23,22, +23,22,55,54,53,54,39,38,39,38,47,1,38,7,6,21,22,7,6,23,22,23,22,55,54,39,54,39,54,55,54,39, +55,34,7,6,23,22,55,54,51,22,23,22,23,22,7,6,23,50,55,54,53,54,39,38,39,38,39,23,38,7,6,7, +6,23,22,21,22,21,22,23,54,55,52,49,54,47,1,38,39,49,38,39,34,7,6,29,1,22,23,50,49,48,49,50, +55,54,61,1,54,55,54,51,22,23,22,23,22,55,54,39,1,0,21,2,2,30,3,5,5,16,17,6,10,10,9,2, +22,1,47,28,28,1,14,2,5,5,10,10,8,8,3,15,1,14,14,27,24,16,16,1,1,11,2,6,5,10,15,6, +7,12,1,2,29,30,44,110,19,15,39,1,10,2,6,5,10,15,6,7,1,11,1,1,27,14,16,108,22,23,21,3, +7,21,18,17,58,40,39,2,1,6,1,22,12,7,7,7,1,3,53,52,79,253,7,22,9,5,6,2,4,1,2,22, +22,2,2,8,41,37,56,56,64,108,74,71,3,21,1,9,7,7,1,56,61,87,53,45,46,31,14,19,16,11,202,2, +21,108,104,9,10,11,1,1,16,37,57,56,75,22,2,82,1,29,30,41,73,70,9,9,8,2,2,5,5,10,76,76, +21,16,16,1,1,16,16,23,71,72,10,8,8,2,1,8,8,5,75,76,44,29,29,2,19,13,16,49,63,57,55,9, +9,8,2,1,8,8,4,61,61,45,36,18,15,63,5,6,23,21,3,4,2,38,38,57,56,57,22,5,7,7,7,60, +60,76,51,52,3,122,21,2,3,8,8,10,16,14,14,17,22,3,2,22,1,31,40,91,53,29,30,1,73,72,102,21, +22,3,7,6,10,24,81,58,59,1,24,24,43,17,11,14,19,0,0,0,0,2,0,0,0,16,2,64,1,112,0,44, +0,62,0,0,19,54,55,49,54,55,22,23,22,23,22,23,22,23,22,7,6,7,6,7,6,7,6,7,38,39,38,39, +38,39,7,6,39,38,63,1,39,38,55,54,31,1,54,55,49,23,34,7,49,6,21,20,23,22,51,50,55,54,53,52, +39,38,35,181,29,39,39,48,48,39,39,30,29,20,21,10,8,8,10,21,20,29,30,39,39,48,48,39,39,29,25,18, +90,21,18,15,10,46,46,10,15,18,21,90,18,25,235,14,9,9,9,9,14,14,9,9,9,9,14,1,50,26,18,17, +1,1,17,18,26,25,26,27,21,15,15,21,26,27,26,25,18,17,1,1,17,18,25,21,23,53,10,15,18,21,80,80, +21,18,15,10,53,22,21,82,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,0,255,192,2,0,1,192,0,8, +0,17,0,44,0,55,0,73,0,91,0,0,55,6,7,38,39,54,55,22,23,51,6,7,38,39,54,55,22,31,1,6, +7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,5,51,54,55,38,39,35, +6,7,22,23,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,6,7,49,6,7,22,23,22,23, +54,55,54,55,38,39,38,39,184,2,22,22,2,2,22,22,2,192,2,22,22,2,2,22,22,2,136,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,192,128,15,1,1,15,128,15,1,1,15,32, +31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,192,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20, +31,224,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,32,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,144,1,15,15,1,1,15,15,1,104,1,20,20,31,31,20,20,1,1,20,20, +31,31,20,20,1,144,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,44,0,62,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,55,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49,6,7,22, +23,22,51,50,55,54,53,52,39,38,35,7,22,23,22,55,54,39,38,39,38,39,6,7,6,7,6,23,22,55,54,55, +49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9, +14,13,9,9,1,1,9,9,13,160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,76,44,37,9,8,7,4,13, +26,27,35,35,27,27,13,3,7,7,10,37,44,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,16,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9, +193,1,16,3,5,5,10,29,18,18,1,1,18,18,29,10,5,5,4,15,1,0,0,0,0,2,0,0,255,192,1,255, +1,192,0,29,0,34,0,0,1,54,39,49,38,39,33,6,7,6,31,1,21,35,6,7,6,21,22,23,51,54,55,38, +39,38,39,35,53,55,15,1,35,39,33,1,246,15,8,8,23,254,68,23,8,8,15,214,49,20,13,14,1,15,224,15, +1,1,13,14,20,47,213,97,64,170,64,1,42,1,134,18,19,19,2,2,19,19,18,214,176,1,13,14,20,15,1,1, +15,20,14,13,1,176,214,6,64,64,0,0,0,2,0,0,255,192,2,0,1,192,0,26,0,106,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,23,22,29,1,20,23,22,63, +1,54,31,1,22,51,50,63,1,54,31,1,22,23,6,15,1,6,47,1,38,35,34,15,1,6,29,1,22,23,22,23, +51,22,23,21,20,23,22,51,50,63,1,54,61,1,52,63,1,54,55,52,47,1,38,55,54,31,1,22,55,54,31,1, +38,39,38,39,34,7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,254,178,10,4,4,12,10,14,8,12,15,4,7,10,7,4,5,6,29,12,1,1,16,36,11,12,32,4,5,12,8, +39,16,1,13,14,20,32,15,1,9,9,14,16,10,25,13,6,6,19,1,8,33,7,7,9,13,14,20,11,7,11,28, +20,53,54,73,42,36,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,193, +18,7,9,41,6,4,9,10,17,9,5,7,3,7,4,5,3,15,6,14,17,5,9,3,4,10,2,7,29,12,20,28, +20,14,13,1,1,15,48,14,9,9,13,34,18,20,12,7,2,1,6,20,12,7,33,8,6,8,3,5,4,17,11,2, +5,67,42,42,1,15,0,0,0,3,0,0,255,192,2,0,1,192,0,26,0,87,0,102,0,0,37,6,7,49,6,7, +49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,23,22,31,1,22,23,21,22,23,22, +23,21,20,23,22,55,54,63,1,54,63,1,54,55,53,52,47,1,38,39,35,34,47,1,38,39,38,63,1,54,31,1, +22,55,54,47,1,38,63,1,54,47,1,34,35,6,7,6,7,49,37,7,6,7,6,31,1,22,31,1,54,53,38,39, +49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,58,9,13,25, +57,29,1,1,15,15,1,9,9,12,25,8,2,7,24,8,23,1,14,4,14,20,44,16,15,34,7,2,5,15,6,10, +10,24,14,8,7,8,14,15,16,15,14,10,3,5,5,71,53,53,21,1,124,26,12,5,5,4,16,6,17,29,2,1, +25,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,64,17,23,7,17,9, +29,40,18,7,10,17,39,12,7,6,3,8,25,11,27,14,4,14,28,8,20,14,4,14,1,7,20,4,7,16,9,3, +5,4,7,4,11,12,11,16,21,20,19,17,20,4,1,40,39,64,37,10,5,11,11,13,50,17,4,8,14,14,56,45, +0,6,0,0,255,192,2,0,1,192,0,26,0,71,0,102,0,114,0,125,0,137,0,0,37,6,7,49,6,7,49,6, +7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,5,23,22,63,1,54,23,22,31,1,22,51,50, +55,54,47,1,38,55,54,59,1,54,63,1,54,47,1,38,55,54,63,1,54,63,1,38,35,6,7,6,7,22,23,49, +5,7,6,47,1,38,39,6,15,1,6,15,1,6,7,6,31,1,22,23,22,63,1,54,31,1,54,55,38,7,49,5, +23,22,55,54,47,1,38,7,6,23,49,55,6,23,22,63,1,54,39,38,15,1,55,7,6,23,22,63,1,54,39,38, +7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,52,31,13, +9,16,9,11,12,6,9,8,18,11,7,6,3,6,3,7,7,12,3,20,13,11,8,9,16,8,4,4,13,17,12,5, +16,32,38,88,59,59,2,1,4,1,142,15,11,7,2,10,17,19,9,6,2,4,37,13,5,4,5,7,6,14,14,15, +4,16,14,1,57,17,4,5,254,218,32,15,5,2,14,32,15,4,3,14,81,3,14,15,5,8,2,14,15,4,8,85, +16,6,13,14,7,16,6,13,14,7,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,39,7,2,9,15,10,2,3,11,18,15,9,8,11,20,12,9,10,1,17,16,14,14,21,11,12,11,4,5, +2,11,41,12,2,59,59,88,20,19,5,5,2,9,3,15,1,1,15,10,3,1,21,8,14,15,14,13,14,6,6,5, +2,4,9,1,46,73,1,1,68,8,2,14,15,4,8,3,14,15,5,40,15,5,2,14,32,15,4,3,14,32,207,32, +14,7,6,13,32,14,7,6,13,0,0,0,0,11,0,0,255,192,2,0,1,192,0,26,0,34,0,42,0,47,0,52, +0,57,0,62,0,70,0,78,0,96,0,114,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6, +7,6,7,38,39,38,39,38,39,5,35,21,51,50,55,54,55,39,35,21,51,38,39,38,35,7,53,35,21,51,21,53, +35,21,51,39,21,51,53,35,29,1,51,53,35,39,53,35,34,7,6,7,51,21,53,35,22,23,22,59,1,55,34,7, +49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22, +51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,143,55,8,18,13, +13,3,47,8,55,3,13,13,18,24,64,64,64,64,144,64,64,64,64,16,8,18,13,13,3,55,55,3,13,13,18,8, +8,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,104,40,11,12,17,56,40,17,12, +11,40,40,40,56,40,40,96,40,40,56,40,40,16,40,11,12,17,56,40,17,12,11,224,9,9,14,14,9,9,9,9, +14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,66,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,34,7,49,6,7,22, +23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40, +40,51,52,40,40,19,4,7,6,10,60,72,80,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160,14,9,9,9, +9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,156,9,9,14,14,9,9,9, +9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,66,0,84,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,6,7,49,6,21,20, +23,22,23,54,55,54,53,52,39,38,39,23,54,55,49,54,53,52,39,38,39,6,7,6,21,20,23,22,23,0,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40, +40,51,52,40,40,19,4,7,6,10,60,72,80,14,9,9,9,9,14,14,9,9,9,9,14,160,14,9,9,9,9,14, +14,9,9,9,9,14,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76, +1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,204,1,18,18,27,27,18,18,1,1,18,18, +27,27,18,18,1,128,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,48,0,98,0,147,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,54,53, +38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23, +22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55, +49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49, +0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6, +3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2, +1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6, +5,3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10, +6,6,3,18,1,100,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1, +12,2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1, +1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,5,0,0,255,192,2,0,1,192,0,28, +0,62,0,84,0,134,0,183,0,0,1,38,39,49,38,39,52,55,48,49,52,55,54,55,54,55,54,23,22,23,22,23, +20,7,6,7,6,35,49,39,22,23,6,7,6,7,22,23,22,23,50,55,22,21,6,7,6,7,6,7,38,39,38,39, +38,39,54,55,54,55,54,55,49,17,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39, +54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23, +22,23,22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23, +22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21, +51,49,1,208,20,14,13,1,5,1,7,10,11,8,6,6,12,14,15,1,10,10,15,6,7,208,78,61,2,2,6,1, +1,23,23,33,14,13,21,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,71,60,10,7,6,3,20, +40,40,51,52,40,40,19,4,7,6,10,60,72,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3, +3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3, +1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,1,64,1,13,13,20,8,10,1,1,16, +16,16,10,6,6,15,23,24,16,17,12,12,4,2,128,1,40,5,5,12,18,34,22,22,1,5,47,54,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,180,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6, +6,3,18,1,100,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12, +2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1, +1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,48,0,73,0,97,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,39,38,7,49,6,15,1, +39,38,7,6,7,6,23,22,31,1,22,63,1,54,39,38,39,49,23,38,39,49,38,7,6,7,6,31,1,22,63,1, +54,55,54,39,38,39,38,15,1,39,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58, +34,34,1,1,0,71,60,10,7,6,3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,57,13,12,12,4,4,17, +13,11,12,4,3,6,7,14,65,14,5,18,3,6,7,14,155,4,12,12,13,14,7,6,3,18,5,14,65,14,7,6, +3,4,12,11,14,16,4,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72, +76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,203,3,6,7,14,16,4,4,7,6,14, +14,11,12,4,17,3,14,66,13,11,12,4,24,14,7,6,3,4,12,11,13,66,14,3,17,4,12,11,14,14,6,7, +4,4,16,0,0,4,0,0,255,192,2,0,1,192,0,26,0,48,0,70,0,93,0,0,55,54,55,49,54,55,49,54, +55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55, +54,55,54,39,38,7,6,7,49,39,38,7,49,6,21,6,31,1,7,6,23,20,23,22,63,1,54,53,52,47,1,5, +52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47,1,55,54,53,49,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6,3,20,40,40,51,52,40,40,19,4, +7,6,10,60,72,122,7,5,6,1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90,8,8,90,6, +5,6,3,36,36,3,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76, +1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,185,3,3,3,7,4,4,43,43,4,4,7, +3,3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0, +0,6,0,0,255,192,2,0,1,192,0,28,0,70,0,93,0,115,0,137,0,157,0,0,1,54,51,49,50,23,22,21, +20,7,6,7,6,7,34,7,34,49,34,55,54,55,52,55,52,49,54,55,49,7,6,7,6,7,6,23,22,55,54,55, +54,55,22,7,6,7,6,7,6,39,54,55,54,55,54,39,38,7,6,7,6,7,38,55,54,55,54,55,54,23,49,23, +38,7,49,34,7,6,7,6,7,6,7,20,23,22,55,54,55,54,55,54,39,49,5,31,1,20,23,22,55,54,63,1, +54,39,38,15,1,6,7,6,23,22,23,49,55,6,23,49,22,63,1,54,55,54,39,38,35,47,1,38,39,38,7,6, +15,2,54,55,54,21,6,7,6,7,6,35,34,39,38,53,52,55,54,55,49,1,171,15,20,20,15,15,14,13,24,27, +20,1,1,2,11,1,3,6,1,6,11,45,2,2,7,3,2,14,13,21,20,31,7,7,41,10,11,62,65,83,84,75, +2,2,7,3,2,14,13,21,20,31,7,7,41,10,11,62,65,83,84,75,34,4,9,8,5,30,50,51,56,8,1,9, +45,48,48,37,36,9,9,19,254,190,57,5,3,5,6,6,3,30,1,6,5,9,98,6,2,2,5,3,4,142,3,6, +6,10,97,7,1,2,5,3,4,56,5,1,3,5,6,6,3,29,184,30,20,10,3,7,7,10,15,20,20,15,15,14, +12,26,1,178,14,15,15,20,20,15,10,7,7,2,1,10,18,29,1,1,1,26,12,19,7,8,30,20,21,13,14,2, +3,7,2,2,75,84,83,65,62,11,10,41,7,7,32,19,21,13,14,2,3,7,2,2,75,84,83,65,62,11,10,41, +169,9,1,9,55,51,51,29,5,9,9,4,18,9,9,36,37,47,48,46,87,5,56,4,3,5,2,1,7,97,10,6, +6,3,29,3,6,6,5,3,1,99,9,5,6,1,30,3,6,6,5,3,5,57,4,3,5,2,2,6,98,220,7,3, +1,11,20,30,25,13,14,15,15,20,20,15,11,6,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,49,0,81, +0,113,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,7, +54,39,49,38,7,6,7,38,39,38,7,6,23,22,23,22,23,54,55,54,55,49,39,15,1,6,7,6,31,1,7,6, +23,22,63,1,23,22,55,54,53,39,55,54,39,38,47,2,38,35,34,7,49,51,15,1,6,7,6,31,1,7,6,23, +22,63,1,23,22,55,54,53,39,55,54,39,38,47,2,38,35,34,7,49,2,0,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,72,57,58,34,34,1,105,4,7,6,10,60,72,71,60,10,7,6,3,20,40,40,51,52, +40,40,19,254,17,38,5,1,2,4,28,7,2,5,4,4,33,35,4,4,4,7,27,4,1,3,4,38,17,2,6,4, +2,192,17,38,5,1,2,4,28,7,2,5,4,4,34,34,4,4,4,7,27,4,1,3,4,38,17,2,5,5,2,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,76,10,6,6,3,18,1,1, +18,3,6,6,10,45,27,27,1,1,27,27,45,207,34,5,1,5,4,4,27,37,5,3,3,2,18,18,2,3,3,5, +37,27,3,5,5,1,5,34,5,5,34,5,1,5,4,4,27,37,5,3,3,2,18,18,2,3,3,5,37,27,3,5, +5,1,5,34,5,5,0,0,0,6,0,0,255,192,2,128,1,192,0,48,0,71,0,120,0,170,0,197,0,232,0,0, +37,6,7,49,6,7,38,39,38,39,54,55,54,55,54,55,54,55,48,49,54,39,38,7,6,7,54,55,54,55,22,23, +22,23,38,39,38,7,6,23,22,23,22,23,22,23,22,23,49,39,54,39,49,38,7,6,7,38,39,38,7,6,23,22, +23,22,23,54,55,54,55,49,39,22,55,54,53,52,39,38,39,6,7,6,7,22,23,22,55,49,51,52,49,34,51,52, +55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,23,54,53,38,39,38,39, +6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21, +22,23,48,49,48,21,51,49,22,55,49,5,6,7,49,6,7,6,7,6,39,38,39,38,53,52,55,54,55,54,55,54, +55,54,55,50,7,49,5,34,57,1,38,53,48,53,38,39,38,39,52,51,50,51,50,21,22,23,22,23,22,23,22,23, +22,21,20,7,6,7,6,39,49,2,37,33,60,60,77,75,60,60,33,7,6,12,5,5,3,7,3,2,14,13,21,10, +16,16,69,69,98,99,70,69,16,16,10,21,13,14,2,1,9,3,5,5,12,6,7,78,4,7,6,10,60,72,71,60, +10,7,6,3,20,40,40,51,52,40,40,19,189,3,6,4,16,15,25,23,15,17,1,1,6,5,3,1,1,1,2,1, +3,3,2,2,14,13,15,14,2,2,3,3,1,1,1,1,169,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1, +2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,254,167,2,6,6,11,1,1,15,18,18,14, +14,14,6,14,14,16,10,9,8,7,9,1,1,200,1,2,11,6,7,2,9,1,1,1,8,8,7,7,16,14,15,6, +14,14,15,17,18,14,77,64,38,38,1,1,38,38,64,4,6,14,13,13,14,30,18,21,13,14,2,2,3,95,60,61, +2,2,61,60,95,3,2,2,14,13,21,18,30,14,13,13,14,6,4,39,10,6,6,3,18,1,1,18,3,6,6,10, +45,27,27,1,1,27,27,45,103,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4, +2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,3,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1, +1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,4,1,22,18,27,27,12,2,1,12,1,1, +13,15,19,19,14,7,5,5,4,1,2,1,1,9,87,1,1,1,12,27,27,18,9,1,1,1,1,1,4,5,5,7, +14,19,19,15,13,1,1,12,0,4,0,0,255,192,2,0,1,192,0,45,0,63,0,81,0,108,0,0,1,22,23,49, +22,23,49,22,23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23,21,20,23,38, +39,38,39,54,55,54,55,54,55,49,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49, +6,7,22,23,22,51,50,55,54,53,52,39,38,35,3,38,39,49,38,39,53,54,55,51,22,23,22,51,50,55,54,55, +51,22,23,21,6,7,6,7,49,1,0,72,57,58,34,34,1,1,48,48,77,14,37,18,4,7,6,10,60,72,71,60, +10,7,6,3,18,37,15,78,48,48,1,1,34,34,58,57,72,80,14,9,9,9,9,14,13,9,9,1,1,9,9,13, +160,13,9,9,1,1,9,9,13,14,9,9,9,9,14,80,27,18,18,1,2,25,2,18,5,3,9,8,4,5,18,2, +25,2,1,18,18,27,1,192,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6,3,18,1,1,18,3, +6,6,10,42,27,47,28,23,27,65,65,86,72,57,58,34,34,1,240,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,254,176,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,45,27,18, +18,1,0,0,0,4,0,0,255,192,2,0,1,192,0,45,0,67,0,89,0,116,0,0,1,22,23,49,22,23,49,22, +23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23,21,20,23,38,39,38,39,54, +55,54,55,54,55,49,7,23,7,6,23,20,23,22,63,1,54,53,52,47,1,38,7,6,21,6,23,49,23,6,21,49, +20,31,1,22,55,54,53,52,47,1,55,54,53,52,39,38,15,1,3,38,39,49,38,39,53,54,55,51,22,23,22,51, +50,55,54,55,51,22,23,21,6,7,6,7,49,1,0,72,57,58,34,34,1,1,48,48,77,14,37,18,4,7,6,10, +60,72,71,60,10,7,6,3,18,37,15,78,48,48,1,1,34,34,58,57,72,137,36,36,4,1,6,5,7,89,8,8, +89,7,5,6,1,4,170,8,8,90,6,5,6,3,36,36,3,6,5,6,90,33,27,18,18,1,2,25,2,18,5,3, +9,8,4,5,18,2,25,2,1,18,18,27,1,192,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6, +3,18,1,1,18,3,6,6,10,42,27,47,28,23,27,65,65,86,72,57,58,34,34,1,149,43,43,4,4,7,3,3, +3,48,4,9,9,4,48,3,3,3,7,4,4,30,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,7,3,3, +3,48,254,179,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,45,27,18,18,1,0,5,0,0,255,192,2,0, +1,192,0,8,0,53,0,70,0,88,0,114,0,0,37,54,55,22,23,6,7,38,39,3,38,39,49,38,39,54,55,54, +55,54,55,22,23,22,23,22,23,6,7,6,7,54,61,1,54,55,54,39,38,7,6,7,38,39,38,7,6,23,22,23, +21,22,23,49,19,54,39,38,35,34,7,6,23,22,55,54,51,50,23,22,55,23,54,55,49,54,55,38,39,38,39,6, +7,6,7,22,23,22,23,7,21,6,7,6,7,38,39,38,39,53,54,55,51,22,23,22,51,50,55,54,55,51,22,23, +49,1,56,2,22,22,2,2,22,22,2,137,78,48,48,1,1,34,34,58,57,72,72,57,58,34,34,1,1,48,48,77, +14,37,18,4,7,6,10,60,72,71,60,10,7,6,3,18,36,1,15,43,11,8,25,36,36,25,7,10,13,10,14,21, +21,14,10,13,118,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,16,1,18,18,27,27,18,18,1,2,25, +2,18,5,3,9,8,4,5,18,2,25,2,240,22,2,2,22,22,2,2,22,254,221,27,65,65,86,72,57,58,34,34, +1,1,34,34,58,57,72,86,65,65,27,23,28,47,27,42,10,6,6,3,18,1,1,18,3,6,6,10,42,27,47,28, +23,1,6,10,13,30,30,13,10,7,10,18,18,11,8,35,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1, +131,45,27,18,18,1,1,18,18,27,45,25,2,1,18,9,9,18,1,2,25,0,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,48,0,65,0,83,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,38,39,38,7,6,23,22,23,22,23,54,55,54,55,54,39,38,7,6,7,49,55,54,39, +38,35,34,7,6,23,22,55,54,51,50,23,22,55,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51, +0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,71,60,10,7,6, +3,20,40,40,51,52,40,40,19,4,7,6,10,60,72,138,11,8,25,36,36,25,8,11,13,10,14,21,21,14,10,13, +218,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,76,1,18,3,6,6,10,45,27,27,1,1,27,27,45,10,6,6,3,18,1,95,10,13, +30,30,13,10,7,10,18,18,11,8,3,9,9,14,14,9,9,9,9,14,14,9,9,0,0,6,0,0,0,32,1,192, +1,96,0,21,0,43,0,65,0,87,0,109,0,131,0,0,19,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59, +1,50,23,22,29,2,20,7,49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,55,52,55,49,54, +59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,20,7,49,6,43,1,34,39,38,61,1,52,55,54, +59,1,50,23,22,29,1,55,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,23,20,7, +49,6,43,1,34,39,38,61,1,52,55,54,59,1,50,23,22,29,1,128,12,11,17,48,17,11,12,12,11,17,48,17, +11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12,12,11,17,48,17,11,12,128, +12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12,12,11,17,48,17,11,12,128,12,11, +17,48,17,11,12,12,11,17,48,17,11,12,1,8,17,11,12,12,11,17,48,17,11,12,12,11,17,48,192,17,11,12, +12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11, +17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48, +17,11,12,12,11,17,48,0,0,6,0,0,255,224,1,64,1,160,0,21,0,43,0,65,0,87,0,109,0,131,0,0, +55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,2,50,23,49,22,29,1,20,7,6,43, +1,34,39,38,61,1,52,55,54,59,1,39,34,39,49,38,61,1,52,55,54,59,1,50,23,22,29,1,20,7,6,43, +1,55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55,54,59,1,39,34,39,49,38,61,1,52,55, +54,59,1,50,23,22,29,1,20,7,6,43,1,55,50,23,49,22,29,1,20,7,6,43,1,34,39,38,61,1,52,55, +54,59,1,88,17,11,12,12,11,17,48,17,11,12,12,11,17,48,192,17,11,12,12,11,17,48,17,11,12,12,11,17, +48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,240, +17,11,12,12,11,17,48,17,11,12,12,11,17,48,240,17,11,12,12,11,17,48,17,11,12,12,11,17,48,96,12,11, +17,48,17,11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17, +11,12,12,11,17,48,17,11,12,128,12,11,17,48,17,11,12,12,11,17,48,17,11,12,32,12,11,17,48,17,11,12, +12,11,17,48,17,11,12,128,12,11,17,48,17,11,12,12,11,17,48,17,11,12,0,0,0,3,0,0,255,224,2,0, +1,160,0,36,0,57,0,78,0,0,1,6,7,49,6,7,49,6,7,21,22,23,50,55,54,61,1,54,55,54,55,22, +23,22,23,21,22,23,54,55,53,38,39,38,39,38,39,3,35,6,7,6,7,21,22,23,22,23,51,50,55,54,61,1, +52,39,38,35,51,35,34,7,6,29,1,20,23,22,59,1,54,55,54,55,53,38,39,38,39,1,0,72,57,57,33,34, +3,2,21,10,7,8,2,59,59,88,88,59,59,2,2,22,22,2,3,34,33,57,57,72,96,16,27,18,18,1,1,18, +18,27,16,14,9,9,9,9,14,208,16,14,9,9,9,9,14,16,27,18,18,1,1,18,18,27,1,160,1,35,35,58, +58,69,104,22,2,7,7,10,104,88,59,59,2,2,59,59,88,104,22,2,2,22,105,69,57,58,35,35,1,255,0,1, +18,18,27,64,27,18,18,1,9,9,14,128,14,9,9,9,9,14,128,14,9,9,1,18,18,27,64,27,18,18,1,0, +0,3,0,0,255,192,2,0,1,192,0,21,0,78,0,100,0,0,55,52,39,49,38,43,1,6,7,6,7,21,22,23, +22,23,51,50,55,54,53,39,55,6,7,49,6,7,49,6,7,21,22,23,50,55,54,61,1,54,55,54,55,22,23,22, +23,21,20,7,6,43,1,38,39,35,34,7,6,7,6,23,22,23,51,54,55,51,54,55,54,55,53,38,39,38,39,38, +39,19,54,55,49,54,55,53,38,39,38,39,35,34,7,6,29,1,20,23,22,59,1,191,9,9,14,15,27,18,18,1, +1,18,18,27,16,14,9,9,1,65,72,57,57,33,34,3,2,21,10,7,8,2,59,59,88,88,59,59,2,12,11,17, +111,13,28,30,18,14,13,4,4,14,14,22,33,28,13,111,37,25,25,1,3,34,33,57,57,72,112,27,18,18,1,1, +18,18,27,16,14,9,9,9,9,14,16,224,14,9,9,1,18,18,27,48,27,18,18,1,9,9,14,112,224,1,35,35, +58,58,69,40,22,2,7,7,10,40,88,59,59,2,2,59,59,88,144,17,11,12,23,1,11,10,17,24,17,16,1,1, +23,1,25,25,37,144,69,58,58,35,35,1,254,144,1,18,18,27,48,27,18,18,1,9,9,14,112,14,9,9,0,0, +0,3,0,16,255,192,2,47,1,192,0,28,0,33,0,46,0,0,55,53,54,55,37,54,51,50,31,1,22,21,20,7, +3,6,7,35,7,6,35,34,47,1,38,53,52,63,1,37,39,7,23,55,1,55,23,7,6,43,1,38,39,53,52,55, +49,143,1,20,1,17,10,15,18,13,54,12,7,202,15,23,73,24,10,13,13,10,50,10,10,24,1,90,29,215,85,159, +254,46,63,71,31,7,10,69,22,2,7,128,72,24,14,202,8,13,54,13,18,13,12,254,238,18,1,25,10,10,50,10, +13,13,10,25,220,29,158,85,214,254,146,63,71,30,8,2,22,5,10,7,0,8,0,0,255,192,2,0,1,192,0,18, +0,37,0,62,0,75,0,88,0,101,0,114,0,132,0,0,1,22,23,51,54,53,38,39,38,39,38,39,35,6,21,22, +23,22,23,35,22,23,51,54,53,38,39,38,39,38,39,35,6,21,22,23,22,31,1,35,39,38,43,1,6,7,6,7, +21,22,23,22,23,33,54,55,54,55,53,52,39,38,35,5,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35, +38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51,22,23,21,51,6,7,35,38,39,53,54,55,51, +22,23,21,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,158,2,13,16,16,6,43,27,5,3, +13,16,16,8,42,27,5,108,2,13,16,16,6,43,27,5,3,13,16,16,8,42,27,5,174,224,111,18,20,43,27,18, +18,1,1,18,18,27,1,128,27,18,18,1,9,9,14,254,160,1,7,16,7,1,1,7,16,7,1,96,1,7,16,7, +1,1,7,16,7,1,96,1,7,16,7,1,1,7,16,7,1,96,1,7,16,7,1,1,7,16,7,1,254,160,27,18, +18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,14,13,1,2,16,61,36,23,40,13,1,2,16,61,37,22,40, +13,1,2,16,61,36,23,40,13,1,2,16,61,37,22,40,78,83,13,1,18,18,27,224,27,18,18,1,1,18,18,27, +160,14,9,9,184,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1,1,7,112,7,1, +1,7,112,7,1,1,7,112,7,1,1,7,112,1,56,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0, +0,8,0,0,255,192,2,0,1,192,0,41,0,54,0,67,0,80,0,93,0,106,0,119,0,138,0,0,1,50,23,49, +22,21,20,7,6,35,17,50,23,22,21,20,7,6,43,1,53,35,21,35,34,39,38,53,52,55,54,51,17,34,39,38, +53,52,55,54,51,33,5,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21, +55,6,7,21,22,23,51,54,55,53,38,39,35,5,22,23,51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23, +51,54,55,53,38,39,35,23,22,23,51,54,55,53,38,39,35,6,7,21,7,6,7,49,6,7,6,23,22,59,1,50, +55,54,39,38,39,38,39,1,224,14,9,9,9,9,14,14,9,9,9,9,14,176,96,176,14,9,9,9,9,14,14,9, +9,9,9,14,1,192,254,144,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,144,15,1, +1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,112, +1,15,32,15,1,1,15,32,15,1,96,34,25,26,9,1,6,7,10,144,10,7,6,2,9,25,25,34,1,192,9,9, +14,14,9,9,254,128,9,9,14,14,9,9,64,64,9,9,14,14,9,9,1,128,9,9,14,14,9,9,96,1,15,32, +15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,144,15,1, +1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15,1,1,15,32,48,1, +20,19,32,10,7,7,7,7,10,32,19,20,1,0,0,0,0,5,0,0,255,192,2,128,1,192,0,26,0,35,0,62, +0,75,0,86,0,0,1,22,23,21,22,23,51,54,55,53,52,39,38,39,38,39,53,38,39,35,6,7,21,20,23,22, +23,7,6,7,22,23,51,39,38,7,1,38,61,1,38,39,35,6,7,21,20,23,22,23,22,29,1,22,23,51,54,55, +53,52,39,38,39,3,34,35,49,34,35,23,22,59,1,39,38,35,51,35,23,22,59,1,54,55,53,38,39,1,188,35, +1,1,7,48,7,1,15,15,26,38,2,1,7,48,7,1,17,16,27,249,105,90,128,151,89,113,24,36,1,102,9,1, +7,48,7,1,29,32,17,18,1,7,48,7,1,23,23,41,192,28,29,28,3,118,19,29,88,117,20,29,255,184,117,21, +29,17,22,2,2,22,1,11,26,43,30,7,1,1,7,30,33,28,28,19,27,45,62,7,1,1,7,66,33,28,27,19, +178,17,56,79,1,131,27,5,1,16,6,11,62,7,1,1,7,62,36,20,21,32,33,38,30,7,1,1,7,30,50,42, +43,28,254,247,138,22,138,22,138,22,2,22,112,22,2,0,0,4,0,0,255,192,2,0,1,192,0,26,0,128,0,146, +0,164,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5, +38,39,6,7,6,23,49,21,51,21,50,23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7,6,7,34,21, +6,35,21,35,57,1,6,21,20,23,49,21,50,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21,6,7,6,7, +34,21,6,35,20,35,53,21,6,23,22,51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55,54,55,54,55, +38,39,38,39,49,39,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38, +35,34,7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,32,21,27,6,2,1,5,1,1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2,1,1,4, +4,1,1,2,1,4,6,6,4,2,1,2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7,6,1,1, +6,7,10,1,2,3,3,5,4,10,7,6,1,1,6,7,10,112,13,9,9,1,1,9,9,13,14,9,9,9,9,14, +160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,44,11,1,1,4,7,2,1,1,1,1,3,4,1,4,5,5,4,2,4,1,2,5,5, +4,3,1,1,1,2,5,5,1,1,1,1,1,3,4,5,5,5,3,3,4,1,2,5,5,4,3,1,1,1,1,1, +3,6,5,11,6,8,7,12,9,8,9,5,1,2,2,1,2,6,8,7,12,9,8,9,5,124,9,9,14,14,9,9, +9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,4,0,0,255,192,2,0,1,192,0,26, +0,128,0,178,0,227,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,5,38,39,6,7,6,23,49,21,51,21,50,23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7, +6,7,34,21,6,35,21,35,57,1,6,21,20,23,49,21,50,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21, +6,7,6,7,34,21,6,35,20,35,53,21,6,23,22,51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55, +54,55,54,55,38,39,38,39,49,39,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55, +52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53, +38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23, +22,23,22,21,22,23,48,49,48,21,51,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,32,21,27,6,2,1,5,1,1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2, +1,1,4,4,1,1,2,1,4,6,6,4,2,1,2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7, +6,1,1,6,7,10,1,2,3,3,5,4,10,7,6,1,1,6,7,10,61,5,1,16,15,24,24,15,16,1,6,5, +3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24, +24,15,16,1,6,5,3,1,1,1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,44,11,1,1,4,7,2,1,1,1,1, +3,4,1,4,5,5,4,2,4,1,2,5,5,4,3,1,1,1,2,5,5,1,1,1,1,1,3,4,5,5,5,3, +3,4,1,2,5,5,4,3,1,1,1,1,1,3,6,5,11,6,8,7,12,9,8,9,5,1,2,2,1,2,6,8, +7,12,9,8,9,5,68,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1, +1,12,2,2,4,3,1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1, +1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,5,0,0,255,192,2,0,1,192,0,37, +0,139,0,157,0,174,0,197,0,0,37,38,39,49,38,7,6,7,6,31,1,22,23,6,35,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,20,7,38,7,49,39,38,39,38,39,38,39,6,7,6,23,49,21,50,21,50, +23,20,51,22,23,20,51,22,23,22,23,20,7,6,21,6,7,6,7,34,21,6,35,20,35,57,1,6,21,20,23,49, +21,51,21,50,23,20,51,22,23,22,23,22,23,20,7,6,21,6,7,6,7,34,21,6,35,20,35,57,1,6,23,22, +51,50,55,54,55,54,55,38,39,38,39,34,39,38,39,54,55,54,55,54,55,21,39,50,55,49,54,53,52,39,38,35, +34,7,6,7,22,23,22,51,55,54,39,38,35,34,7,6,23,22,55,54,51,50,23,22,55,23,55,54,23,22,23,22, +7,6,15,1,6,47,1,38,55,54,55,54,23,22,31,1,1,206,11,24,24,29,30,14,15,7,23,3,8,47,53,72, +57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,14,17,19,166,1,6,7,10,21,27,6,2,1,5,1, +1,2,1,4,6,1,5,4,2,1,2,1,4,6,6,4,1,2,1,1,4,4,1,1,2,1,4,6,6,4,2,1, +2,1,4,6,6,4,1,2,1,1,5,1,2,6,27,21,10,7,6,1,1,6,7,10,1,2,3,3,5,4,10,7, +6,1,120,14,9,9,9,9,14,13,9,9,1,1,9,9,13,218,11,8,25,36,36,25,8,11,13,10,14,21,21,14, +10,13,45,21,17,14,15,5,4,9,8,17,85,15,5,23,4,9,8,17,17,14,15,4,6,113,26,13,13,8,9,26, +27,30,89,12,8,20,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,44,40,8,3,3,11,7,9, +5,11,1,1,4,7,2,1,1,1,1,3,4,1,4,5,5,4,2,4,1,2,5,5,4,3,1,1,1,2,5,5, +1,1,1,1,1,3,4,5,5,5,4,2,4,1,2,5,5,4,3,1,1,1,3,6,5,11,6,8,7,12,9,8, +9,5,1,2,2,1,2,6,8,7,12,1,92,9,9,14,14,9,9,9,9,14,14,9,9,3,10,13,30,30,13,10, +7,10,18,18,11,8,136,5,5,9,9,17,18,16,15,5,24,2,14,89,18,15,15,5,5,9,9,17,21,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,64,0,82,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23, +22,23,49,3,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,50,55,49,54,53,52,39,38,35,34, +7,6,7,22,23,22,51,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,0,58,43,43,15,3,7,6,11,254,236,11,6,7,3,15,43,43,58,80,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,160,14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72, +57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,16,9,9,14,14, +9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0, +1,192,0,26,0,46,0,96,0,145,0,0,55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6, +7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23,22,23,49,39,54,53,38,39, +38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23, +22,21,22,23,48,49,48,21,51,49,22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51, +52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,0,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,58,43,43,15,3,7,6, +11,254,236,11,6,7,3,15,43,43,58,29,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3,2, +2,14,14,14,14,2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3,1,1, +1,2,1,3,3,2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34,34,58,57,72, +72,57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,216,2,6,28,21, +21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12,2,2,4,3,1,1,1,1,1, +4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12, +2,2,4,3,1,1,1,1,1,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,68,0,91,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54, +55,54,39,38,35,33,34,7,6,23,22,23,22,23,49,3,38,7,49,6,21,6,31,1,7,6,23,20,23,22,63,1, +54,53,52,47,1,5,52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47,1,55,54,53,49,0,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,0,58,43,43,15,3,7,6,11,254, +236,11,6,7,3,15,43,43,58,122,7,5,6,1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90, +8,8,90,6,5,6,3,36,36,3,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,61,3,3,3,7,4,4,43,43,4,4,7,3, +3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,26,0,46,0,64,0,82,0,0,55,54,55,49,54,55,49,54,55,22,23,22, +23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,5,54,55,49,54,55,54,39,38,35,33,34,7,6,23,22,23, +22,23,49,3,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,23,54,51,49,50,23,22,55,54,39,38, +35,34,7,6,23,22,55,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1, +1,0,58,43,43,15,3,7,6,11,254,236,11,6,7,3,15,43,43,58,80,13,9,9,1,1,9,9,13,14,9,9, +9,9,14,125,14,21,21,14,10,13,11,8,25,36,36,25,8,11,13,10,192,72,57,58,34,34,1,1,34,34,58,57, +72,72,57,58,34,34,1,1,34,34,58,57,72,176,1,32,33,52,11,7,8,8,7,11,52,33,32,1,1,16,9,9, +14,14,9,9,9,9,14,14,9,9,58,18,18,11,8,10,13,30,30,13,10,7,10,0,0,5,0,0,255,192,2,128, +1,192,0,63,0,77,0,82,0,95,0,108,0,0,37,22,21,49,22,21,20,7,6,7,38,39,38,39,52,55,52,53, +35,22,21,6,7,6,7,38,39,38,39,52,55,35,34,39,38,53,17,38,39,35,34,39,38,53,52,55,54,59,1,22, +23,22,23,17,33,50,23,22,21,20,7,6,43,1,3,22,23,49,22,23,17,35,17,54,55,54,55,51,7,51,53,35, +21,7,35,34,39,38,61,1,52,55,54,59,1,21,37,21,20,7,6,43,1,53,51,50,23,22,21,2,29,1,2,14, +14,20,20,14,13,1,2,197,3,1,13,14,20,20,14,13,1,3,67,14,9,9,1,15,16,14,9,9,9,9,14,32, +27,18,18,1,1,224,14,9,9,9,9,14,67,109,20,14,13,1,192,1,13,14,20,96,96,96,96,80,32,14,9,9, +9,9,14,32,1,64,9,9,14,32,32,14,9,9,0,2,3,5,6,20,14,13,1,1,13,14,20,8,6,1,1,8, +8,20,14,13,1,1,13,14,20,8,8,9,9,14,1,80,15,1,9,9,14,14,9,9,1,18,18,27,254,192,9,9, +14,14,9,9,1,192,1,13,14,20,254,240,1,16,20,14,13,1,96,48,48,224,9,9,14,160,14,9,9,224,192,160, +14,9,9,224,9,9,14,0,0,4,0,0,255,200,2,64,1,192,0,27,0,42,0,58,0,70,0,0,37,38,39,49, +38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,6,7,6,35,34,39,49,23,17,54,55,52,63,1,54, +23,22,23,17,6,15,1,1,55,22,23,22,23,21,7,6,39,38,39,17,54,55,49,1,39,53,22,23,22,51,50,55, +54,55,21,1,17,17,25,24,20,19,1,1,35,34,50,52,34,34,1,1,19,19,25,24,17,6,9,9,6,143,5,5, +1,116,13,9,10,1,1,14,145,254,111,123,4,8,5,5,127,12,10,10,1,1,14,1,113,193,34,23,17,23,23,17, +23,33,137,20,35,34,37,37,28,51,34,34,1,1,34,34,51,28,37,37,34,35,20,8,8,192,1,47,10,10,2,2, +46,5,7,7,13,254,241,16,6,58,1,60,49,22,20,10,10,252,51,3,6,7,13,1,14,17,6,254,195,55,194,49, +27,20,20,27,49,249,0,0,0,5,0,0,255,200,2,64,1,192,0,26,0,44,0,59,0,75,0,88,0,0,1,6, +7,49,6,7,49,6,7,6,35,34,39,38,39,38,39,38,39,54,55,54,55,22,23,22,23,7,50,55,49,54,53,52, +39,38,35,34,7,6,21,20,23,22,51,23,52,63,1,54,23,22,23,17,6,15,1,17,54,55,33,22,23,21,7,6, +39,38,39,17,54,63,1,22,23,49,23,54,55,21,39,53,22,23,22,51,50,55,49,1,152,1,19,19,25,24,17,6, +9,9,6,17,24,25,19,19,1,1,34,34,51,51,34,34,1,120,17,11,12,12,11,17,17,11,12,12,11,17,138,1, +116,13,9,10,1,1,14,145,5,5,254,236,5,5,127,12,10,10,1,1,14,123,4,8,178,23,33,192,33,23,17,23, +23,17,1,72,28,37,37,34,35,20,8,8,20,35,34,37,37,28,51,34,34,1,1,34,34,51,32,12,11,17,17,11, +12,12,11,17,17,11,12,28,2,2,46,5,7,7,13,254,241,16,6,58,1,47,10,10,10,10,252,51,3,6,7,13, +1,14,17,6,49,22,20,151,27,49,249,55,194,49,27,20,20,0,0,0,0,2,0,0,255,192,1,252,1,188,0,27, +0,41,0,0,1,7,39,55,39,38,15,1,6,39,38,63,1,54,51,50,31,1,55,54,51,50,23,22,21,20,7,49, +7,6,15,1,6,39,38,63,1,54,63,1,23,7,1,224,164,130,116,14,16,17,87,16,17,14,14,86,22,29,29,22, +13,15,28,37,36,28,28,28,250,74,102,25,13,9,9,2,5,21,74,64,130,64,1,32,166,130,116,13,14,14,85,15, +15,16,17,86,21,21,13,15,27,27,28,37,36,28,253,73,21,5,2,10,8,13,25,102,73,65,130,65,0,4,0,0, +255,192,1,255,1,192,0,11,0,29,0,60,0,72,0,0,19,39,38,43,1,6,7,6,31,1,54,55,23,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,7,23,22,7,6,47,1,7,6,39,38,53,55,39,38,55,54, +63,2,54,51,50,31,2,22,23,22,7,19,35,34,15,1,22,23,55,54,39,38,39,224,75,4,9,120,10,4,4,5, +111,46,64,32,75,49,50,2,2,50,49,75,75,49,50,2,2,50,49,75,93,38,8,1,5,5,7,47,47,7,5,5, +9,38,5,3,2,7,52,24,3,7,7,3,24,52,7,2,3,5,146,119,9,5,74,64,46,111,5,4,4,11,1,61, +123,8,1,8,8,8,159,42,11,29,2,50,49,75,75,49,50,2,2,50,49,75,75,49,50,2,157,37,53,7,4,4, +3,25,25,3,4,4,7,53,37,5,7,6,1,8,47,7,7,47,8,1,6,7,5,1,61,8,122,11,42,159,8,7, +8,1,0,0,0,3,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,0,37,6,7,49,6,7,49,6,7,38, +39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,34,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,35,23,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,2,0,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,176,13,9,9,1,1,9,9,13,14,9,9,9,9,14,160, +14,9,9,9,9,14,13,9,9,1,1,9,9,13,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,80,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9, +9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,37,0,62,0,88,0,0,55,54,55,49,54,55,49,54, +55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,6,7,22,23,51,54,55,38,39,35,39,22, +21,20,7,6,35,34,39,38,53,52,55,6,7,22,23,22,23,54,55,54,55,38,39,23,54,55,49,54,55,38,39,22, +21,20,7,6,35,34,39,38,53,52,55,6,7,22,23,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,192,15,1,1,15,128,15,1,1,15,128,6,6,9,9,14,14,9,9,6,36,2, +1,18,18,27,27,18,18,1,2,36,166,27,18,18,1,2,36,6,9,9,14,14,9,9,6,36,2,1,18,18,27,192, +72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,112,1,15,15,1,1,15,15, +1,202,8,10,14,9,9,9,9,14,10,8,16,42,27,18,18,1,1,18,18,27,42,16,122,1,18,18,27,42,16,8, +10,14,9,9,9,9,14,10,8,16,42,27,18,18,1,0,0,3,0,0,255,192,1,128,1,192,0,11,0,22,0,42, +0,0,19,54,31,1,22,23,19,33,19,54,63,1,3,6,7,22,23,51,54,55,38,39,35,23,50,23,49,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,33,181,11,11,80,4,1,40,254,240,40,1,4,80,29,22,2,2,22,80, +22,2,2,22,80,200,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1,64,1,187,10,10,80,4,5,254,190,1, +66,5,4,80,254,245,2,22,22,2,2,22,22,2,176,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0, +255,192,2,0,1,191,0,10,0,41,0,0,1,54,39,49,38,39,38,15,1,51,55,7,33,6,7,21,22,31,1,22, +23,22,23,6,7,22,23,51,54,53,38,39,54,55,54,63,1,54,55,53,38,39,1,246,12,2,3,17,19,18,204,152, +99,6,254,32,15,1,1,15,15,1,33,33,54,19,6,1,16,224,16,6,19,54,33,32,1,17,15,1,1,15,1,131, +14,17,17,9,9,12,152,98,130,1,15,32,15,1,1,62,47,47,22,26,33,17,2,2,17,33,26,22,47,47,62,1, +1,15,32,14,2,0,0,0,0,2,0,0,255,192,2,0,1,192,0,21,0,66,0,0,19,54,55,49,54,55,33,22, +23,22,23,21,6,7,6,7,33,38,39,38,39,53,19,52,55,49,54,51,53,54,55,54,55,51,50,55,54,61,1,22, +23,22,23,21,6,7,6,7,35,6,7,21,50,23,22,29,1,20,7,6,43,1,34,39,38,61,1,0,1,18,18,27, +1,32,27,18,18,1,1,18,18,27,254,224,27,18,18,1,160,9,9,14,1,22,23,34,144,14,9,9,28,18,17,1, +1,27,27,41,144,15,1,14,9,9,9,9,14,64,14,9,9,1,128,27,18,18,1,1,18,18,27,64,27,18,18,1, +1,18,18,27,64,254,224,14,9,9,16,34,23,22,1,9,9,14,123,11,24,24,32,32,41,27,27,1,1,15,16,9, +9,14,128,14,9,9,9,9,14,128,0,0,0,9,0,0,255,192,1,192,1,192,0,5,0,11,0,22,0,28,0,49, +0,60,0,78,0,84,0,94,0,0,55,22,23,38,39,35,53,51,54,55,6,7,23,54,55,49,54,55,35,22,23,22, +23,55,22,23,51,38,39,55,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,3,35,38,39, +54,55,51,22,23,6,7,39,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,55,54,55,35,6,7,39, +51,38,39,38,39,6,7,6,7,130,9,44,12,2,39,39,2,12,43,10,94,6,8,7,2,46,2,7,8,6,41,12, +2,39,9,44,119,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,48,224,15,1,1,15,224, +15,1,1,15,112,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,41,44,9,39,2,12,64,46,2,7,8, +6,6,8,7,2,240,49,21,29,41,32,41,29,21,49,111,6,20,20,33,33,20,20,6,181,29,41,49,21,106,1,18, +18,27,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,254,96,1,15,15,1,1,15,15,1,96,1,36,37, +54,54,37,36,1,1,36,37,54,54,37,36,1,42,21,49,41,29,102,33,20,20,6,6,20,20,33,0,0,2,0,2, +255,194,2,0,1,192,0,11,0,39,0,0,1,54,55,22,23,22,23,6,15,1,39,55,3,7,6,15,1,55,22,51, +50,55,54,53,52,39,38,35,34,7,6,21,20,23,7,55,54,63,1,23,1,118,23,36,34,22,22,1,1,26,207,86, +182,119,19,7,27,178,96,4,4,14,9,9,9,9,14,14,9,9,1,95,49,9,27,83,85,1,165,26,1,1,22,22, +34,36,24,180,85,207,254,197,83,27,9,49,95,1,9,9,14,14,9,9,9,9,14,4,4,96,179,25,8,19,85,0, +0,2,0,2,255,195,1,254,1,190,0,13,0,45,0,0,1,54,51,49,50,31,1,22,21,20,15,1,39,55,23,7, +6,7,5,6,39,55,22,51,54,55,54,53,52,39,38,39,6,7,6,7,22,23,7,38,55,19,54,63,1,23,1,112, +18,22,22,18,46,16,16,56,125,55,49,46,10,30,254,247,18,14,153,10,10,21,13,14,14,13,21,20,13,14,1,1, +5,154,13,6,88,11,32,152,130,1,174,16,16,46,18,22,22,18,55,125,56,206,153,31,12,88,6,13,154,5,1,13, +14,20,20,14,13,1,1,13,14,20,11,10,153,14,18,1,8,31,10,46,129,0,0,0,0,4,0,0,255,192,1,255, +1,191,0,13,0,27,0,55,0,81,0,0,1,22,21,49,20,15,1,39,55,54,51,50,31,1,1,55,23,7,6,15, +1,6,39,38,63,1,54,63,1,7,39,38,53,52,63,1,54,51,50,31,1,48,35,48,21,7,6,23,22,63,1,48, +49,48,55,31,1,34,21,7,6,23,22,63,1,48,49,52,51,23,22,21,20,15,1,6,35,34,47,1,55,23,1,237, +18,18,57,114,57,19,26,26,19,24,254,64,255,114,255,10,14,104,14,10,9,3,30,4,10,204,146,87,14,14,78,15, +19,19,15,20,1,64,10,10,11,11,64,1,45,205,1,64,10,10,11,11,64,1,20,14,14,78,15,19,19,15,87,146, +45,1,149,19,26,26,19,57,114,57,18,18,24,254,202,255,114,255,10,4,30,4,11,9,14,104,14,10,250,146,87,15, +19,19,15,78,14,14,20,1,64,11,11,10,10,64,1,45,205,1,64,11,11,10,10,64,1,20,15,19,19,15,78,14, +14,87,146,45,0,4,0,0,255,192,2,128,1,192,0,32,0,52,0,70,0,88,0,0,19,53,54,31,1,22,31,2, +39,38,55,51,22,31,2,22,31,1,22,7,6,7,6,39,37,38,47,1,38,53,49,1,50,23,49,22,21,20,7,6, +35,33,34,39,38,53,52,55,54,51,33,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,52,55, +49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,0,2,18,35,17,6,17,128,41,3,18,40,19,9,109,108,24, +19,35,17,3,3,22,63,66,254,214,17,13,82,10,2,96,14,9,9,9,9,14,253,192,14,9,9,9,9,14,2,64, +254,96,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,1,25,99,17,1, +8,4,16,47,39,146,17,3,1,15,194,32,7,16,27,16,21,22,10,23,17,77,5,12,84,9,13,254,231,9,9,14, +14,9,9,9,9,14,14,9,9,80,14,9,9,9,9,14,14,9,9,9,9,14,16,14,9,9,9,9,14,14,9,9, +9,9,14,0,0,2,0,0,255,192,2,128,1,154,0,33,0,53,0,0,1,54,59,1,22,23,22,7,6,7,5,6, +43,1,34,47,1,38,63,1,54,31,1,55,39,38,53,54,63,1,54,31,1,55,1,52,55,49,54,51,33,50,23,22, +21,20,7,6,35,33,34,39,38,53,1,229,27,31,57,21,11,11,7,29,71,254,239,7,8,137,15,10,73,9,14,32, +14,14,57,100,147,8,1,8,46,24,27,195,104,254,27,9,9,14,2,64,14,9,9,9,9,14,253,192,14,9,9,1, +130,14,1,16,15,20,75,37,137,3,11,85,15,10,16,7,6,25,49,95,5,9,9,5,23,12,10,73,53,254,94,14, +9,9,9,9,14,14,9,9,9,9,14,0,0,2,0,0,255,192,1,191,1,192,0,44,0,56,0,0,37,39,55,54, +47,1,38,15,1,39,54,55,54,39,38,39,38,39,35,34,7,6,21,17,22,23,51,54,55,53,51,23,7,6,31,1, +22,63,1,23,22,63,1,54,39,1,51,50,23,22,21,20,7,6,43,1,53,1,184,96,96,14,14,23,17,17,95,67, +35,19,19,9,9,34,33,44,134,13,9,9,2,21,31,22,1,42,113,97,14,14,23,17,17,96,96,17,17,23,14,15, +254,151,87,17,11,11,11,11,17,87,0,96,96,17,17,22,14,14,96,68,18,36,35,44,43,26,25,1,9,9,14,254, +248,22,2,2,22,56,112,96,17,17,23,14,14,96,96,14,14,23,17,17,1,112,12,11,17,17,11,12,80,0,0,0, +0,4,0,0,255,192,2,0,1,192,0,36,0,53,0,71,0,91,0,0,5,6,35,34,39,53,38,39,6,7,21,38, +39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,6,7,6,7,53,38,39,6,7,21,3,54,39,38,35,34,7, +6,23,22,55,54,51,50,23,22,63,1,54,51,49,50,23,22,55,54,39,38,35,34,7,6,23,22,55,7,22,23,49, +22,23,54,55,54,55,53,38,39,38,39,6,7,6,7,21,1,96,45,51,51,45,1,15,15,1,58,35,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,1,34,35,58,1,15,15,1,134,11,8,25,36,36,25,7,10,13,10,14,21,21, +14,10,13,99,14,21,21,14,10,13,11,8,25,36,36,25,8,11,13,10,109,1,13,14,20,20,14,13,1,1,13,14, +20,20,14,13,1,45,19,19,205,15,1,1,15,190,34,58,58,72,72,57,58,34,34,1,1,34,34,58,57,72,72,58, +58,34,190,15,1,1,15,205,1,0,10,13,30,30,13,10,7,10,18,18,11,8,3,18,18,11,8,10,13,30,30,13, +10,7,10,134,20,14,13,1,1,13,14,20,32,20,14,13,1,1,13,14,20,32,0,0,0,5,0,0,255,192,2,0, +1,192,0,26,0,40,0,61,0,79,0,97,0,0,1,22,23,49,22,23,49,22,23,6,7,6,7,6,7,38,39,38, +39,38,39,54,55,54,55,54,55,17,22,23,22,55,54,39,38,39,6,7,22,23,49,7,38,39,49,38,39,38,7,6, +7,6,7,22,23,22,51,50,55,54,55,49,55,20,23,49,22,51,50,55,54,55,38,39,38,35,34,7,6,21,35,38, +39,49,38,35,34,7,6,21,20,23,22,51,50,55,54,55,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,54,38,11,12,10,9,47,69,15,1,1,15,48,1,15,14,12,6,6,12,14,15, +1,1,13,14,20,20,14,13,1,96,9,8,15,13,9,9,1,1,9,9,13,15,8,9,96,1,9,9,13,15,8,9, +9,8,15,13,9,9,1,1,192,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,254,160,1,42,10,9,11,12,51,2,1,15,15,1,17,16,24,23,15,6,6,15,23,24,16,20,13,14,14,13,20, +161,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,6,0,0, +255,224,2,128,1,160,0,39,0,46,0,51,0,56,0,74,0,92,0,0,37,35,6,7,6,7,38,39,38,39,35,6, +7,6,7,38,39,38,39,35,38,39,38,39,53,54,55,54,55,33,22,31,1,22,29,1,6,7,6,7,37,51,53,35, +6,7,21,33,39,35,21,51,35,53,35,21,51,23,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,5, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,2,80,16,1,27,27,41,41,27,27,1,128,1,27,27, +41,41,27,27,1,16,20,14,13,1,1,20,20,31,1,137,29,20,110,16,1,13,14,20,253,240,96,88,7,1,1,225, +80,81,161,225,96,96,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,192,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,64,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,1,13,14,20,232,31, +20,20,1,1,22,132,17,24,108,20,14,13,1,192,96,1,7,88,96,96,96,96,144,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,4,0,0,255,224,2,128, +1,160,0,70,0,83,0,93,0,102,0,0,19,20,7,49,6,35,34,39,38,61,1,54,55,54,55,22,23,22,23,21, +20,7,55,54,23,22,15,1,51,22,23,22,21,20,7,6,43,1,34,39,38,63,1,7,6,15,1,6,7,38,39,38, +39,53,54,55,54,63,1,54,39,53,52,39,38,35,34,7,6,7,23,7,21,22,23,50,63,1,54,55,7,6,7,49, +7,51,21,20,21,35,38,39,54,55,5,33,54,55,33,22,23,6,7,192,9,9,14,14,9,9,1,27,27,41,41,27, +27,1,4,123,18,13,14,6,18,84,14,9,9,9,9,14,128,16,10,9,5,12,94,18,41,14,21,41,31,21,21,1, +1,19,18,31,85,7,1,9,9,14,13,9,9,1,1,32,1,8,4,3,14,26,16,49,22,1,136,40,40,22,2,2, +22,2,80,254,180,12,10,1,54,22,2,2,22,1,32,14,9,9,9,9,14,32,41,27,27,1,1,27,27,41,8,31, +31,37,4,13,14,18,53,1,9,9,13,14,9,9,12,14,15,38,29,79,71,25,35,1,1,20,21,30,72,33,25,25, +9,26,41,41,8,14,9,9,9,9,14,32,176,72,7,1,4,25,46,51,14,9,23,32,40,4,4,2,22,22,2,48, +24,24,2,22,22,2,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,52,0,102,0,151,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,38,7,6,23,22,23,22,23, +54,55,54,55,54,39,38,7,6,7,6,7,38,39,38,39,49,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55, +49,51,52,49,34,51,52,55,52,55,54,55,54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49, +22,55,49,55,22,55,54,53,38,39,38,39,6,7,6,7,20,23,22,55,49,51,52,49,34,51,52,55,52,55,54,55, +54,55,54,55,22,23,22,23,22,23,22,21,22,23,48,49,48,21,51,49,0,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,72,57,58,34,34,1,164,11,11,11,9,17,28,29,41,42,29,29,17,9,10,12,11,14,23, +23,33,32,23,22,14,63,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3,2,2,14,14,14,14, +2,2,3,3,1,1,1,1,3,6,151,3,6,5,1,16,15,24,24,15,16,1,6,5,3,1,1,1,2,1,3,3, +2,2,14,14,14,14,2,2,3,3,1,1,1,1,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34, +1,1,34,34,58,57,72,70,11,9,11,12,20,16,16,1,1,16,16,20,12,11,9,11,16,13,12,1,1,12,13,16, +94,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2,2,12,1,1,12,2,2,4,3, +1,1,1,1,1,4,1,3,4,1,2,6,28,21,21,2,2,21,21,28,6,2,1,4,1,1,1,1,1,3,4,2, +2,12,1,1,12,2,2,4,3,1,1,1,1,1,0,0,0,7,0,1,255,192,2,127,1,192,0,34,0,39,0,44, +0,49,0,54,0,59,0,64,0,0,1,38,39,33,6,7,3,6,23,22,59,1,21,35,6,7,6,7,22,23,51,54, +55,52,39,38,39,35,53,33,50,55,54,39,3,7,23,35,39,51,35,23,35,55,51,35,7,35,55,51,3,55,51,7, +35,51,55,51,23,35,51,39,51,23,35,2,63,6,26,254,65,25,6,63,3,9,9,15,255,47,20,14,13,1,1,15, +223,15,1,13,14,20,48,1,0,15,10,9,3,64,57,19,98,10,89,138,10,140,10,120,169,10,98,19,89,140,22,103, +11,114,163,11,150,11,172,221,11,103,22,114,1,166,24,2,2,24,254,192,15,11,12,64,1,13,14,20,15,1,2,14, +20,14,13,1,64,12,12,14,1,64,38,96,96,96,96,96,96,255,0,112,112,112,112,112,112,0,0,0,0,2,0,0, +255,225,2,64,1,160,0,46,0,65,0,0,1,38,7,49,6,7,49,6,7,6,7,38,39,38,39,38,39,38,7,6, +7,6,23,22,23,22,23,22,23,22,55,50,51,50,49,22,55,54,55,54,55,54,55,54,39,38,39,5,54,55,54,55, +38,39,38,39,38,7,6,7,6,7,22,23,22,23,2,56,15,36,35,44,43,41,48,18,18,48,41,43,44,35,36,15, +7,1,1,6,5,20,19,40,63,54,53,27,1,1,1,26,54,54,64,40,20,19,5,6,1,1,7,254,232,19,25,29, +31,12,25,25,34,8,7,35,25,25,12,31,28,26,19,1,0,1,5,5,18,18,37,47,49,49,46,38,18,17,5,6, +1,1,7,15,33,33,40,41,37,58,12,13,3,3,13,13,58,37,40,40,33,33,15,7,1,111,29,22,28,17,53,45, +44,30,6,6,29,45,44,54,17,27,23,29,0,1,0,0,255,192,2,0,1,192,0,54,0,0,1,23,22,31,1,22, +23,6,15,1,6,31,1,22,7,6,7,34,47,1,38,39,35,34,15,1,6,39,38,39,38,63,1,54,53,52,47,1, +38,55,54,55,54,31,1,22,63,1,54,55,50,23,22,23,49,1,93,19,11,39,58,34,2,1,22,82,21,1,3,1, +19,18,30,23,20,45,24,32,8,9,8,67,19,16,16,10,15,15,28,9,11,44,12,4,3,17,17,21,72,45,30,31, +20,31,22,16,17,6,1,145,69,40,15,21,15,37,28,17,59,17,27,50,29,20,20,1,16,38,20,1,2,13,3,7, +8,16,28,28,49,16,18,20,16,70,18,21,21,13,13,1,5,1,35,40,24,1,13,13,21,0,0,0,0,9,0,0, +255,192,2,0,1,192,0,13,0,35,0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,0,19,50,23,49,22,29, +1,35,53,52,55,54,59,1,3,54,55,49,54,55,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,51,6, +7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,51,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,51,20,7,49,6,35,34,39,38,53,52,55, +54,51,50,23,22,21,7,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,23,20,7,49,6,35,34,39, +38,53,52,55,54,51,50,23,22,21,39,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,192,14,9,9, +128,9,9,14,64,192,1,27,27,41,128,41,27,27,1,1,13,14,20,224,20,14,13,1,160,34,23,22,1,1,22,23, +34,34,23,22,1,1,22,23,34,160,9,9,14,14,9,9,9,9,14,14,9,9,32,9,9,14,14,9,9,9,9,14, +14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9, +14,14,9,9,9,9,14,14,9,9,160,9,9,14,14,9,9,9,9,14,14,9,9,1,192,9,9,14,96,96,14,9, +9,255,0,41,27,27,1,1,27,27,41,208,20,14,13,1,1,13,14,20,208,1,22,23,34,34,23,22,1,1,22,23, +34,34,23,22,1,192,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,96,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,0,2,0,0,255,192,2,0,1,192,0,49, +0,54,0,0,37,51,22,23,22,23,6,7,21,6,7,6,7,33,38,39,38,39,53,38,39,54,55,54,55,51,54,55, +54,55,38,39,38,39,54,55,54,55,22,23,22,23,6,7,6,7,22,23,22,31,1,33,21,33,53,1,110,34,48,31, +32,1,2,30,1,13,14,20,254,160,20,14,13,1,30,2,1,32,31,48,34,23,15,15,1,2,18,19,1,1,27,27, +41,41,27,27,1,1,19,18,2,1,15,15,23,50,254,192,1,64,192,1,32,31,48,33,12,51,20,14,13,1,1,13, +14,20,51,12,33,48,31,32,1,1,15,15,23,27,20,25,34,41,27,27,1,1,27,27,41,34,25,20,27,23,15,15, +1,160,32,32,0,2,0,24,255,192,2,40,1,192,0,30,0,39,0,0,5,22,7,6,47,1,7,6,39,38,63,1, +39,38,55,54,63,2,54,55,22,31,2,22,23,22,15,1,23,39,49,23,39,55,47,1,49,17,1,207,3,16,16,17, +129,128,18,16,15,2,25,104,14,6,6,19,144,64,10,19,20,9,64,144,19,7,5,13,104,24,175,112,22,91,125,56, +27,19,12,11,9,68,68,9,11,12,19,147,102,14,19,18,3,22,132,17,1,1,17,132,22,3,18,19,14,102,147,99, +60,126,90,19,114,254,223,0,0,4,0,32,255,192,1,160,1,192,0,48,0,53,0,64,0,75,0,0,1,35,53,52, +39,38,39,35,6,7,6,7,21,35,6,7,6,7,17,22,23,22,23,51,21,22,23,51,54,55,53,51,21,22,23,51, +54,55,53,51,54,55,54,55,17,38,39,38,47,1,51,21,35,53,19,35,38,39,54,55,51,22,23,6,7,53,35,38, +39,54,55,51,22,23,6,7,1,112,48,14,14,20,96,20,14,13,1,48,20,14,13,1,1,13,14,20,16,1,15,32, +15,1,128,1,15,32,15,1,16,20,14,13,1,1,13,14,20,192,96,96,160,224,15,1,1,15,224,15,1,1,15,224, +15,1,1,15,224,15,1,1,15,1,64,80,20,14,13,1,1,13,14,20,80,1,13,14,20,255,0,20,14,13,1,16, +15,1,1,15,16,16,15,1,1,15,16,1,13,14,20,1,0,20,14,13,1,80,80,80,254,176,1,15,15,1,1,15, +15,1,128,1,15,15,1,1,15,15,1,0,0,4,0,0,255,192,2,0,1,192,0,26,0,44,0,62,0,80,0,0, +55,54,55,49,54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,55,50,55,49,54, +53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35,7, +54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34, +34,58,57,72,72,57,58,34,34,1,176,14,9,9,9,9,14,13,9,9,1,1,9,9,13,160,13,9,9,1,1,9, +9,13,14,9,9,9,9,14,80,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,192,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,16,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,240,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,0,0, +0,6,0,0,255,192,2,0,1,192,0,20,0,25,0,30,0,39,0,55,0,68,0,0,19,52,55,49,54,59,1,50, +23,22,21,17,6,7,6,7,38,39,38,39,17,23,35,21,51,53,7,51,53,35,21,23,54,55,38,39,6,7,22,23, +55,17,55,54,51,50,31,1,22,21,20,15,1,52,53,49,55,51,50,23,22,29,1,20,7,6,35,33,55,0,9,9, +14,128,14,9,9,1,27,27,41,41,27,27,1,128,64,64,64,64,64,32,22,2,2,22,22,2,2,22,128,75,10,13, +13,10,90,10,10,211,151,105,14,9,9,9,9,14,254,215,192,1,160,14,9,9,9,9,14,254,128,41,27,27,1,1, +27,27,41,1,128,32,64,64,192,64,64,184,2,22,22,2,2,22,22,2,24,1,6,75,10,10,90,10,13,13,9,212, +5,5,96,9,9,14,128,14,9,9,192,0,0,3,0,0,0,17,2,64,1,96,0,54,0,131,0,149,0,0,55,50, +55,49,54,55,49,54,55,50,23,22,23,22,23,22,51,54,55,54,55,48,55,39,50,49,54,55,54,55,50,31,1,22, +51,50,55,54,55,38,47,1,38,35,6,7,6,7,6,21,7,6,7,22,51,5,38,39,38,39,38,39,38,39,6,7, +6,7,6,7,38,39,38,39,48,49,38,35,6,7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6,7, +6,21,20,23,22,51,50,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55, +54,53,37,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,192,26,13,13,8,11,25,14,8,8,6,8, +13,13,26,27,15,14,5,1,141,1,5,19,19,32,19,18,39,3,4,12,10,9,1,1,24,38,26,26,60,40,39,20, +19,24,31,3,20,27,1,128,2,24,20,10,11,6,8,15,13,12,9,16,17,29,36,18,18,1,10,13,13,12,9,16, +17,29,35,18,19,1,10,13,12,10,19,20,15,10,10,9,8,15,8,18,19,19,15,24,24,33,33,24,24,15,15,24, +24,33,33,24,24,15,19,19,18,8,15,8,9,254,31,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,128, +7,8,8,15,2,5,5,7,9,7,7,1,8,9,6,1,116,3,7,7,1,4,9,1,9,9,14,24,7,9,6,1, +21,21,21,21,3,28,43,52,12,77,25,6,4,6,5,5,9,1,1,10,7,7,6,1,1,10,9,3,9,1,9,8, +7,6,1,1,10,9,3,9,9,14,4,4,6,7,17,13,9,10,5,6,11,9,8,7,8,7,10,10,7,8,8,7, +10,11,6,5,9,9,13,173,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,3,0,0,255,224,2,64, +1,160,0,10,0,79,0,156,0,0,1,48,21,49,48,49,20,49,20,21,53,7,53,51,21,54,55,54,55,54,55,53, +52,55,54,51,50,23,22,21,20,23,22,51,50,55,54,53,38,39,38,39,6,7,6,29,1,35,53,52,55,54,51,50, +23,22,21,20,23,22,51,50,55,54,55,38,39,38,39,6,7,6,7,21,22,23,22,23,22,51,5,38,39,38,39,38, +39,38,39,6,7,6,7,6,7,38,39,38,39,48,49,38,35,6,7,6,7,6,7,38,39,38,39,48,49,38,35,34, +7,6,7,6,7,6,21,20,23,22,51,50,55,54,55,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,22, +23,22,51,50,55,54,53,1,64,128,192,26,14,14,7,1,2,9,9,14,14,9,9,9,9,14,14,9,9,1,27,26, +41,46,25,26,192,9,9,14,14,9,9,9,9,14,13,9,9,1,2,25,25,44,41,27,27,1,2,2,7,13,14,26, +1,128,2,24,20,10,11,6,8,15,13,12,9,16,17,29,36,18,18,1,10,13,13,12,9,16,17,29,35,18,19,1, +10,13,12,10,19,20,15,10,10,9,8,15,8,18,19,19,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15, +19,19,18,8,15,8,9,1,64,1,1,1,1,4,255,95,96,1,7,8,8,1,2,229,14,9,9,9,9,14,14,9, +9,9,9,14,41,26,27,1,1,29,30,39,92,96,14,9,9,9,9,14,14,9,9,9,9,13,38,29,29,1,1,27, +27,41,229,2,2,7,8,7,62,25,6,4,6,5,5,9,1,1,10,7,7,6,1,1,10,9,3,9,1,9,8,7, +6,1,1,10,9,3,9,9,14,4,4,6,7,17,13,9,10,5,6,11,9,8,7,1,1,7,8,9,9,8,7,1, +1,7,8,9,11,6,5,10,9,13,0,0,0,3,0,0,255,192,2,128,1,192,0,28,0,39,0,57,0,0,19,54, +55,49,54,55,54,51,50,23,22,23,22,23,22,23,20,7,23,22,7,6,39,1,38,55,54,31,1,7,54,55,5,6, +7,38,39,38,39,49,51,38,39,6,7,22,23,22,23,54,55,38,39,38,39,38,39,49,215,22,21,21,16,10,15,15, +10,26,35,35,27,27,1,4,139,16,12,15,19,253,176,16,12,15,19,176,72,2,24,1,19,50,75,74,50,50,2,96, +1,15,14,2,1,32,32,47,16,1,1,16,33,23,23,1,1,49,36,33,32,23,13,13,37,56,56,56,57,38,22,19, +109,15,19,16,12,1,208,15,19,16,12,138,176,35,54,215,49,2,2,50,49,76,14,2,2,14,48,32,32,1,1,15, +15,1,1,23,22,35,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,59,0,81,0,104,0,0,55,54,55,49, +54,55,49,54,55,22,23,22,23,22,23,6,7,6,7,6,7,38,39,38,39,38,39,23,6,7,20,23,22,63,1,54, +59,1,50,31,1,22,55,54,53,38,39,38,39,38,39,38,39,6,7,6,7,6,7,49,39,38,7,49,6,21,6,31, +1,7,6,23,20,23,22,63,1,54,53,52,47,1,5,52,39,49,38,15,1,6,21,20,31,1,22,55,54,53,52,47, +1,55,54,53,49,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,138,9, +1,7,7,8,20,41,43,4,43,41,20,8,7,7,1,9,10,17,16,24,23,28,28,23,24,16,17,10,4,7,5,6, +1,4,36,36,4,1,6,5,7,89,8,8,89,1,6,6,5,6,90,8,8,90,6,5,6,3,36,36,3,192,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,108,18,18,8,5,5,4,7,15,15, +7,4,5,5,8,18,18,18,17,17,12,12,1,1,12,12,17,17,18,217,3,3,3,7,4,4,43,43,4,4,7,3, +3,3,48,4,9,9,4,48,10,7,3,3,3,48,4,9,9,4,48,3,3,3,7,4,4,43,43,4,4,0,0,0, +0,1,0,32,255,224,1,159,1,160,0,52,0,0,37,6,7,6,15,1,6,7,38,47,1,38,39,6,15,1,6,7, +38,47,1,38,39,38,39,38,55,54,55,54,55,54,31,1,22,55,54,47,1,50,55,54,55,54,55,54,23,22,23,22, +23,22,7,1,138,28,3,5,13,7,5,20,20,5,30,8,26,26,8,30,6,19,20,5,7,13,4,4,28,30,11,8, +21,21,29,31,27,86,11,8,5,9,25,2,1,3,3,17,20,19,21,29,21,21,8,11,30,235,42,52,62,61,29,20, +1,1,19,121,26,2,2,26,121,19,1,1,20,29,61,62,52,42,41,56,30,22,22,8,6,15,57,6,10,12,8,16, +1,1,2,14,6,7,5,8,22,22,30,57,40,0,0,0,0,4,0,0,255,192,2,128,1,192,0,13,0,25,0,39, +0,58,0,0,19,23,54,55,54,55,38,7,6,7,6,23,22,31,2,54,39,38,39,38,35,6,7,6,7,37,22,23, +22,7,23,22,55,54,55,54,39,38,39,19,35,55,39,7,35,6,7,6,7,22,23,33,54,55,38,39,38,35,115,103, +26,36,36,41,73,65,65,46,5,2,3,7,133,238,27,12,11,47,11,12,44,47,47,34,1,18,9,4,8,27,102,8, +7,6,1,1,31,31,57,6,207,65,60,73,205,20,14,13,1,1,15,2,32,15,1,1,13,14,20,1,55,37,62,44, +45,23,3,29,30,56,7,7,8,3,48,87,94,70,71,19,4,1,46,46,78,124,24,31,77,90,37,3,5,4,8,73, +64,64,44,254,125,178,22,200,1,13,14,20,15,1,2,13,21,14,14,0,0,6,0,0,255,224,1,192,1,160,0,61, +0,66,0,87,0,92,0,97,0,102,0,0,1,50,23,49,22,29,1,20,7,6,35,21,50,23,22,29,1,20,7,6, +43,1,34,39,38,53,35,20,7,6,43,1,34,39,38,61,1,52,55,54,51,53,34,39,38,61,1,52,55,54,59,1, +50,23,22,21,51,52,55,54,59,1,7,21,51,53,35,5,21,50,23,22,21,51,52,55,54,51,53,34,39,38,53,35, +20,7,6,35,7,21,51,53,35,5,53,35,21,51,1,53,35,21,51,1,160,14,9,9,9,9,14,14,9,9,9,9, +14,64,14,9,9,192,9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9,192,9,9,14,64,48, +32,32,254,240,14,9,9,192,9,9,14,14,9,9,192,9,9,14,48,32,32,1,96,32,32,254,192,32,32,1,160,9, +9,14,64,14,9,9,192,9,9,14,64,14,9,9,9,9,14,14,9,9,9,9,14,64,14,9,9,192,9,9,14,64, +14,9,9,9,9,14,14,9,9,48,32,32,80,192,9,9,14,14,9,9,192,9,9,14,14,9,9,240,32,32,32,32, +32,1,64,32,32,0,0,0,0,2,0,0,255,192,1,255,1,192,0,29,0,47,0,0,37,3,38,39,35,54,53,38, +39,38,39,6,7,6,7,20,23,35,6,7,3,6,23,22,23,33,54,55,54,39,3,34,39,49,38,39,54,55,54,51, +50,23,22,21,20,7,6,35,1,254,73,7,24,60,6,1,27,27,41,41,28,27,1,6,59,24,7,73,6,14,14,24, +1,160,24,14,14,6,254,14,9,9,1,1,9,9,14,14,9,9,9,9,14,2,1,36,25,1,14,18,41,27,27,1, +1,27,27,41,17,15,1,25,254,220,26,19,20,1,1,20,19,26,1,62,9,9,14,14,9,9,9,9,14,14,9,9, +0,2,0,16,255,192,1,47,1,192,0,32,0,47,0,0,23,35,53,54,55,54,47,1,38,39,35,6,15,1,6,23, +22,23,21,35,34,7,6,21,22,23,51,54,55,52,39,38,35,39,6,39,38,39,38,63,1,51,23,22,7,6,7,35, +232,40,53,31,31,4,15,3,13,224,13,3,15,4,31,31,53,40,17,11,12,1,7,208,7,1,12,11,17,52,20,21, +36,21,20,2,14,164,14,2,20,21,36,1,16,117,13,42,43,56,178,14,1,1,14,178,56,43,42,13,117,12,11,17, +7,1,1,7,17,11,12,164,5,5,9,28,29,37,149,149,37,29,28,9,0,7,0,0,255,192,2,0,1,192,0,13, +0,35,0,53,0,82,0,111,0,142,0,174,0,0,19,52,55,49,54,59,1,50,23,22,29,1,35,53,23,22,23,49, +22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55,51,3,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,19,20,15,2,34,21,6,35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,23,47, +1,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,20,15,2,34,21,6,35,34,39,31,2,22,21,20,7,34, +21,15,1,34,21,6,35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,39,20,7,49,34,21,15,1,34,21,6, +35,34,47,2,38,53,52,63,2,54,51,50,23,20,51,31,1,22,21,96,9,9,14,64,14,9,9,128,128,41,27,27, +1,1,13,14,20,224,20,14,13,1,1,27,27,41,128,64,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34, +224,2,30,12,1,2,1,2,2,12,30,2,2,30,12,2,2,1,2,1,12,30,2,76,12,30,2,2,30,12,2,2, +1,2,1,12,30,2,2,30,12,1,2,1,2,2,8,12,30,2,1,1,30,12,1,2,1,2,2,12,30,2,2,30, +12,2,2,1,2,1,20,1,1,30,12,1,2,1,2,2,12,30,2,2,30,12,2,2,1,2,1,12,30,2,1,160, +14,9,9,9,9,14,96,96,128,1,27,27,41,208,20,14,13,1,1,13,14,20,208,41,27,27,1,255,0,1,22,23, +34,34,23,22,1,1,22,23,34,34,23,22,1,1,112,2,2,12,30,1,1,2,30,12,2,2,2,2,12,30,2,1, +1,30,12,2,2,46,30,12,2,2,2,2,12,30,2,1,1,30,12,2,2,2,2,12,30,1,1,2,100,30,12,2, +2,1,2,1,12,30,1,1,2,30,12,2,2,2,2,12,30,2,1,1,50,1,2,1,12,30,1,1,2,30,12,2, +2,2,2,12,30,2,1,1,30,12,2,2,0,2,0,0,255,192,1,190,1,192,0,37,0,50,0,0,1,6,7,49, +6,7,38,39,38,39,6,7,6,21,20,23,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,54,39,54,39, +38,47,1,53,35,6,7,6,7,21,51,54,55,54,55,1,80,25,31,31,25,25,31,30,25,60,27,26,20,20,35,36, +48,27,16,11,10,10,11,16,27,48,36,36,20,20,1,2,26,26,60,16,32,34,23,22,1,32,34,23,22,1,1,64, +1,9,10,12,12,10,9,1,3,48,48,61,51,52,51,34,35,1,2,8,5,1,1,5,8,2,1,35,34,51,51,52, +60,49,48,3,96,32,1,22,23,34,32,1,22,23,34,0,0,9,0,32,255,192,1,223,1,192,0,17,0,75,0,84, +0,97,0,106,0,115,0,133,0,142,0,155,0,0,37,34,7,49,6,7,22,23,22,51,50,55,54,53,52,39,38,35, +55,38,39,49,38,7,38,39,38,39,6,7,6,7,38,7,6,7,6,23,22,23,6,7,6,23,22,23,22,51,50,55, +48,49,22,23,22,23,54,55,54,55,48,49,22,51,50,55,54,55,54,39,38,39,54,55,54,39,5,38,55,22,23,22, +23,34,39,55,6,7,38,55,54,55,50,51,50,51,6,7,55,22,23,6,7,38,39,54,55,17,38,39,54,55,22,23, +6,7,53,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,23,6,35,54,55,54,55,22,7,39,38,39, +38,39,50,51,54,51,22,23,22,7,1,0,14,9,9,1,1,9,9,14,14,9,9,9,9,14,214,7,27,26,56,16, +25,24,33,33,24,25,16,56,26,27,7,13,4,5,29,29,5,4,13,15,25,24,22,22,8,16,25,24,33,33,24,25, +16,8,22,22,24,25,15,13,4,5,29,29,5,4,13,254,137,7,22,11,11,3,4,38,6,37,11,11,21,6,6,32, +2,1,2,1,4,3,124,15,19,17,17,17,17,19,15,15,19,17,17,17,17,19,15,34,23,22,1,1,22,23,34,34, +23,22,1,1,22,23,34,161,6,38,4,3,11,11,22,7,15,11,11,3,4,2,1,2,1,32,6,7,22,224,9,9, +14,14,9,9,9,9,14,14,9,9,96,16,16,15,5,39,23,23,1,1,23,23,39,5,15,16,16,22,32,33,41,41, +33,32,22,26,8,9,1,39,23,23,1,1,23,23,39,1,9,9,25,22,32,33,41,41,33,32,22,224,12,36,9,10, +20,20,11,163,10,9,36,12,10,1,20,20,125,1,36,6,7,7,6,36,1,254,128,1,36,6,7,7,6,36,1,112, +1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,16,11,19,21,10,9,36,12,144,10,9,20,20,1,2,10, +12,36,0,0,0,1,0,0,0,32,2,64,1,95,0,68,0,0,37,22,23,21,20,7,6,7,6,39,38,39,48,49, +48,49,38,39,35,6,7,49,6,7,6,39,38,39,38,61,1,54,55,54,53,52,39,38,39,53,52,55,54,55,54,23, +22,23,22,23,51,54,55,49,54,55,54,23,22,23,22,29,1,6,7,6,21,20,23,2,23,39,2,16,16,26,30,24, +23,10,10,29,208,28,11,10,23,24,30,26,16,16,2,39,7,7,39,2,16,16,26,30,24,23,10,10,29,208,28,11, +10,23,24,30,26,16,16,2,39,7,7,180,21,45,4,28,21,21,6,6,14,14,27,27,2,2,27,27,14,14,6,6, +21,21,28,4,45,21,5,7,7,4,22,45,4,28,21,21,6,6,14,14,27,27,2,2,27,27,14,14,6,6,21,21, +28,4,45,22,4,7,7,5,0,3,0,0,255,192,2,0,1,192,0,16,0,36,0,54,0,0,55,21,22,23,22,23, +22,23,17,38,39,38,39,34,7,6,21,37,6,7,49,6,7,34,21,17,54,55,54,55,54,55,53,52,39,38,35,39, +38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55,0,2,25,39,63,63,48,47,61,62,40,13,8,9,1, +226,40,61,62,46,1,48,63,63,40,24,2,9,8,13,130,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1, +229,213,23,4,1,11,11,30,1,11,29,11,12,1,7,8,12,27,1,12,11,29,1,254,246,30,11,11,1,4,23,213, +12,8,7,96,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,0,2,0,0,255,192,2,0,1,192,0,46, +0,93,0,0,19,22,23,49,22,23,17,6,7,6,7,34,39,38,39,6,35,38,39,38,39,52,55,38,39,38,53,52, +55,54,55,38,53,52,55,54,55,38,53,52,55,54,55,54,55,54,51,23,22,23,49,22,21,20,7,22,23,22,21,20, +7,22,23,22,21,20,7,6,7,22,21,6,7,6,7,34,39,6,7,6,35,38,39,38,39,17,54,55,54,55,50,23, +22,23,184,24,16,15,1,1,15,16,24,22,16,15,3,8,8,27,18,18,1,4,23,15,14,13,12,21,14,14,14,22, +2,14,13,21,3,15,16,22,200,21,13,14,2,22,14,14,14,21,12,13,14,15,23,4,1,18,18,27,8,8,3,15, +16,22,24,16,15,1,1,15,16,24,22,16,15,3,1,192,1,15,16,24,254,112,24,16,15,1,14,14,22,2,1,18, +18,27,11,10,9,20,20,26,24,19,19,10,18,22,23,17,17,6,8,9,23,17,16,6,22,14,14,50,6,16,17,23, +9,8,6,17,17,23,22,18,10,19,19,24,26,20,20,9,10,11,27,18,18,1,2,22,14,14,1,15,16,24,1,144, +24,16,15,1,14,14,22,0,0,5,0,0,255,224,2,0,1,160,0,49,0,58,0,71,0,82,0,93,0,0,19,51, +50,23,22,31,1,22,23,22,29,1,6,7,21,20,7,6,43,1,34,39,38,61,1,33,21,20,7,6,43,1,34,39, +38,61,1,38,39,53,52,55,54,63,1,54,55,54,51,49,21,6,15,1,33,39,38,39,35,23,6,7,21,22,23,51, +54,55,53,38,39,35,7,51,54,55,38,39,35,6,7,22,23,37,6,7,22,23,51,54,55,38,39,35,165,182,31,24, +25,10,35,18,11,11,2,30,9,9,14,32,14,9,9,255,0,9,9,14,32,14,9,9,30,2,11,11,18,35,10,25, +24,31,22,8,26,1,38,26,8,22,182,43,15,1,1,15,96,15,1,1,15,96,136,32,22,2,2,22,32,22,2,2, +22,1,80,22,2,2,22,32,22,2,2,22,32,1,160,18,17,29,101,7,16,16,20,80,37,18,57,14,9,9,9,9, +14,48,48,14,9,9,9,9,14,57,18,37,80,20,16,16,7,101,29,17,18,64,1,20,75,75,20,1,176,1,15,32, +15,1,1,15,32,15,1,32,2,22,22,2,2,22,22,2,48,2,22,22,2,2,22,22,2,0,0,0,0,3,0,0, +0,0,2,0,1,128,0,41,0,66,0,77,0,0,19,52,55,49,54,59,1,50,23,22,21,51,52,55,54,59,1,50, +23,22,21,51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,51,5,38,39,6,7,21,35,6, +7,22,23,51,21,22,23,54,55,53,51,54,55,38,39,35,53,5,51,54,55,38,39,35,6,7,22,23,80,9,9,14, +64,14,9,9,96,9,9,14,64,14,9,9,16,27,18,18,1,1,18,18,27,254,128,27,18,18,1,1,18,18,27,16, +1,48,1,15,15,1,32,15,1,1,15,32,1,15,15,1,32,15,1,1,15,32,254,224,96,15,1,1,15,96,15,1, +1,15,1,96,14,9,9,9,9,14,14,9,9,9,9,14,1,18,18,27,224,27,18,18,1,1,18,18,27,224,27,18, +18,1,96,15,1,1,15,32,1,15,15,1,32,15,1,1,15,32,1,15,15,1,32,64,1,15,15,1,1,15,15,1, +0,5,0,3,255,200,2,94,1,184,0,36,0,76,0,85,0,94,0,103,0,0,19,50,31,1,55,54,23,20,23,6, +15,1,6,15,2,6,39,38,63,1,39,38,39,38,63,1,39,38,55,54,31,1,55,54,51,49,31,1,22,23,22,31, +1,22,15,1,6,7,6,47,1,38,39,38,63,1,39,7,6,7,6,47,1,38,39,38,63,1,54,63,1,54,55,54, +23,49,7,38,15,1,23,39,38,47,1,7,22,55,54,39,38,7,6,23,5,38,7,6,23,22,55,54,39,176,11,4, +29,76,11,7,1,26,18,41,43,14,20,36,8,9,10,1,5,78,11,3,1,8,66,40,5,6,7,11,76,29,4,11, +208,136,25,16,15,3,7,27,8,35,4,11,11,13,15,14,6,6,3,8,247,8,5,11,11,13,15,13,7,6,3,36, +11,35,48,15,23,23,25,16,11,7,32,202,5,1,11,135,100,22,8,3,20,23,7,3,20,1,4,22,7,4,21,21, +8,4,21,1,184,10,74,23,3,8,1,1,13,24,60,14,46,74,33,7,4,5,11,79,13,2,10,10,7,45,69,9, +9,8,3,23,74,10,92,35,8,19,19,26,84,22,36,132,13,6,6,3,4,4,11,11,13,31,66,31,13,6,7,4, +4,4,11,11,13,131,35,6,69,22,8,9,7,62,3,9,47,54,58,10,3,36,147,3,20,22,8,3,20,22,8,20, +4,21,21,8,4,21,22,7,0,5,0,0,255,224,2,128,1,160,0,47,0,54,0,61,0,78,0,95,0,0,37,21, +20,7,6,43,1,6,7,6,7,38,39,38,39,35,6,7,6,7,38,39,38,39,35,34,39,38,61,1,52,55,54,63, +1,54,55,54,59,1,22,31,1,22,23,22,23,21,37,34,15,1,51,53,35,23,51,39,38,43,1,21,23,54,53,38, +39,38,39,6,7,6,7,6,23,22,23,54,55,33,54,53,38,39,38,39,6,7,6,7,6,23,22,23,54,55,2,128, +9,9,14,33,7,26,26,36,36,26,26,7,130,7,26,26,36,36,26,26,7,33,14,9,9,11,11,19,41,12,24,23, +30,182,45,30,100,49,31,31,1,254,43,21,8,31,113,53,101,173,67,10,15,81,253,3,1,13,14,20,20,14,13,1, +1,4,12,33,33,12,254,192,3,1,13,14,20,20,14,13,1,1,4,12,33,33,12,128,48,14,9,9,35,22,22,1, +1,22,22,35,35,22,22,1,1,22,22,35,9,9,14,112,21,15,16,8,104,27,16,17,1,35,125,7,35,35,49,1, +224,20,76,96,96,84,12,96,208,8,8,20,14,13,1,1,13,14,20,8,8,30,2,2,30,8,8,20,14,13,1,1, +13,14,20,8,8,30,2,2,30,0,0,0,0,2,0,0,255,192,2,64,1,192,0,85,0,109,0,0,1,22,23,49, +22,23,21,51,22,23,22,23,21,22,23,54,55,53,38,39,38,61,1,54,55,51,53,54,55,22,23,21,51,53,54,55, +22,23,21,51,22,23,21,20,7,6,7,21,6,7,6,7,38,39,38,39,53,52,39,38,43,1,21,50,23,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,17,54,55,54,55,51,15,1,6,23,22,23,51,7,6,23,22,63,1,54, +39,38,39,35,55,54,39,38,7,49,1,0,27,18,18,1,16,37,25,25,1,2,22,22,2,25,15,16,1,15,16,1, +15,15,1,32,1,15,15,1,16,15,1,16,15,25,1,20,20,31,31,20,20,1,12,11,17,16,14,9,9,9,9,14, +254,224,14,9,9,9,9,14,1,18,18,27,160,58,112,8,3,4,10,59,25,3,9,9,10,112,8,3,4,11,58,25, +3,9,11,8,1,192,1,18,18,27,192,1,25,25,37,32,22,2,2,22,124,8,20,21,27,32,15,1,48,15,1,1, +15,48,48,15,1,1,15,48,1,15,32,27,21,20,8,124,31,20,20,1,1,20,20,31,32,17,11,12,144,9,9,14, +14,9,9,9,9,14,14,9,9,1,128,27,18,18,1,84,96,7,11,9,1,75,11,7,6,7,96,7,11,9,1,75, +11,7,6,7,0,2,0,0,255,193,2,0,1,192,0,20,0,53,0,0,37,39,38,35,34,15,1,6,21,20,31,1, +22,55,50,63,1,54,53,52,39,15,1,6,39,38,39,53,35,21,20,7,6,35,34,39,38,61,1,52,55,54,59,1, +53,54,55,54,31,1,22,7,20,7,1,241,208,15,19,18,15,208,14,14,208,15,19,19,15,208,14,15,86,96,9,9, +8,1,65,9,9,14,14,9,9,10,9,13,95,1,9,8,9,96,7,1,4,226,208,14,14,208,15,18,19,15,208,15, +1,14,208,15,19,18,15,30,84,7,5,4,10,52,48,14,9,9,9,9,14,80,14,9,9,52,11,4,3,6,84,5, +7,7,5,0,0,2,0,0,255,224,1,192,1,160,0,46,0,75,0,0,37,22,23,49,22,23,6,7,6,7,38,39, +35,6,7,38,39,38,39,54,55,53,38,39,54,55,54,55,22,23,51,54,55,22,23,22,23,6,7,6,35,7,22,21, +20,7,23,5,22,23,51,48,49,48,49,39,38,7,48,35,38,39,38,39,54,55,54,55,50,51,55,49,35,6,7,21, +1,128,27,18,18,1,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37, +27,18,18,1,1,18,18,27,38,6,6,38,254,224,15,8,210,37,1,2,1,27,18,18,1,1,18,18,27,2,2,37, +210,8,15,96,1,18,18,27,27,18,18,1,2,30,30,2,1,18,18,27,37,18,210,18,37,27,18,18,1,2,30,30, +2,1,18,18,27,27,18,18,69,13,15,15,13,68,9,8,15,64,1,1,1,18,18,27,27,18,18,1,64,15,8,210, +0,4,0,0,255,224,2,128,1,160,0,16,0,33,0,50,0,67,0,0,19,33,17,51,17,38,39,38,39,33,6,7, +6,7,17,51,17,1,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,37,22,51,50,63,1,54,47,1,38, +7,6,31,1,7,6,23,39,38,15,1,6,31,1,22,51,50,55,54,47,1,55,54,39,128,1,128,64,1,13,14,20, +254,96,20,14,13,1,64,1,240,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,254,254,6,8,8,6,48, +12,12,48,14,14,12,12,34,34,12,12,92,14,14,48,12,12,48,6,8,8,6,12,12,34,34,11,11,1,96,255,0, +1,16,20,14,13,1,1,13,14,20,254,240,1,0,254,224,1,15,16,27,18,18,1,1,18,18,27,16,15,1,98,6, +6,48,14,14,48,12,12,14,14,34,34,14,14,124,12,12,48,14,14,48,6,6,14,14,34,34,14,14,0,3,0,0, +255,192,2,0,1,192,0,16,0,35,0,55,0,0,19,54,31,1,22,23,6,15,1,6,47,1,38,39,54,63,1,5, +22,23,6,15,1,6,47,1,38,39,54,63,1,23,22,63,1,23,7,55,23,22,23,6,15,1,6,47,1,38,39,54, +63,1,23,22,55,49,233,23,24,218,13,1,1,13,218,24,23,219,13,1,1,13,219,1,9,13,1,1,13,218,24,23, +219,13,1,1,13,53,152,37,37,152,53,205,152,53,13,1,1,13,218,24,23,219,13,1,1,13,53,152,37,37,1,187, +10,10,101,7,14,16,7,101,10,10,101,7,16,14,7,101,229,7,14,16,7,101,10,10,101,7,16,14,7,24,70,16, +16,70,24,174,70,24,7,14,16,7,101,10,10,101,7,16,14,7,24,70,16,16,0,0,0,3,0,0,255,192,2,0, +1,192,0,17,0,75,0,93,0,0,55,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,19,50,23,49, +22,29,1,22,23,22,23,51,50,23,22,21,20,7,6,43,1,6,7,6,7,21,20,7,6,35,34,39,38,61,1,38, +39,38,39,35,34,39,38,53,52,55,54,59,1,54,55,54,55,53,52,55,54,51,3,22,23,49,22,23,54,55,54,55, +38,39,38,39,6,7,6,7,176,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,80,14,9,9,61,43,42, +11,35,14,9,9,9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9,9,9,14,35,11, +42,43,61,9,9,14,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,192,34,23,22,1,1,22,23,34, +34,23,22,1,1,22,23,34,1,0,9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9, +9,9,14,35,11,42,43,61,9,9,14,14,9,9,61,43,42,11,35,14,9,9,255,0,54,37,36,1,1,36,37,54, +54,37,36,1,1,36,37,54,0,1,0,0,255,193,2,128,1,192,0,82,0,0,37,6,7,49,6,47,1,38,39,38, +61,1,23,22,63,1,54,47,1,7,6,7,6,31,1,22,23,50,63,1,21,20,7,6,15,1,6,39,38,39,52,55, +54,55,54,55,54,55,54,55,22,23,22,23,21,55,54,61,1,54,55,51,22,23,21,20,31,1,53,54,55,54,55,22, +23,22,23,22,23,22,23,22,21,2,128,2,37,37,49,60,32,19,20,86,6,5,9,3,5,168,168,2,1,1,2,9, +2,3,3,3,86,20,19,32,60,49,37,37,2,4,33,69,3,2,14,16,16,29,30,20,19,1,33,7,1,15,16,15, +1,7,33,1,19,20,30,29,16,17,14,2,2,69,33,4,28,47,26,27,12,15,10,24,24,31,88,58,3,6,13,6, +5,112,112,2,3,3,3,13,3,1,1,58,88,31,24,24,10,15,12,27,26,47,15,15,122,109,4,4,24,15,15,1, +1,18,19,28,60,22,5,8,171,15,1,1,15,171,8,5,22,60,28,19,18,1,1,15,16,24,4,3,109,122,15,15, +0,3,0,0,255,192,2,0,1,192,0,34,0,65,0,78,0,0,55,51,21,22,23,51,54,55,53,51,50,55,54,61, +1,52,39,38,35,53,38,39,35,6,7,21,34,7,6,29,1,20,23,22,51,5,35,54,55,38,39,38,39,21,22,23, +22,23,6,7,6,7,33,6,7,6,7,22,23,33,54,55,38,39,38,39,37,51,54,55,53,38,39,35,6,7,21,22, +23,160,12,1,15,40,15,1,12,14,9,9,9,9,14,1,15,64,15,1,14,9,9,9,9,14,1,48,1,47,2,2, +54,55,81,54,36,37,1,1,37,36,54,254,240,20,14,13,1,1,15,1,224,15,1,1,13,14,20,254,152,208,7,1, +1,7,208,7,1,1,7,128,16,15,1,1,15,16,9,9,14,224,14,9,9,16,15,1,1,15,16,9,9,14,224,14, +9,9,128,53,75,81,55,54,2,64,1,37,36,54,54,36,37,1,1,13,14,20,15,1,1,15,20,14,13,1,32,1, +7,16,7,1,1,7,16,7,1,0,0,0,0,2,0,0,0,32,2,126,1,128,0,48,0,53,0,0,1,21,51,50, +31,1,55,54,23,22,15,1,6,35,33,38,39,38,39,53,39,38,39,53,54,55,54,55,51,53,35,34,39,38,53,52, +55,54,59,1,50,23,22,21,20,7,6,43,1,7,35,21,23,53,1,32,81,15,14,50,167,14,7,6,8,183,20,28, +254,253,20,14,13,1,67,28,1,1,13,14,20,176,32,14,9,9,9,9,14,128,14,9,9,9,9,14,32,192,48,48, +1,64,32,7,25,36,2,11,11,12,206,22,1,13,14,20,21,30,14,30,65,20,14,13,1,32,9,9,14,14,9,9, +9,9,14,14,9,9,80,65,21,86,0,0,0,1,0,0,255,192,2,0,1,192,0,60,0,0,37,6,7,49,6,7, +33,38,39,38,39,54,55,54,55,38,39,54,55,54,55,51,38,39,54,55,54,55,51,54,55,54,55,38,39,54,51,22, +23,22,23,20,7,51,22,23,22,23,6,7,51,22,23,22,23,6,7,22,23,22,23,2,0,1,20,21,31,254,145,31, +20,20,1,1,16,17,27,28,1,1,20,20,31,14,21,1,1,18,18,27,16,34,23,22,1,1,14,7,8,41,27,27, +1,6,6,27,18,18,1,1,21,14,31,20,20,1,1,28,27,17,16,1,8,31,20,20,1,1,20,20,31,27,20,19, +5,21,36,31,20,20,1,18,30,27,18,18,1,1,22,23,34,26,20,2,1,27,27,41,17,15,1,18,18,27,30,18, +1,20,20,31,36,21,5,19,20,27,0,0,0,3,0,0,255,192,2,0,1,192,0,15,0,37,0,55,0,0,1,22, +7,6,43,1,34,39,38,63,1,54,55,22,31,1,7,52,55,49,54,59,1,50,23,22,29,1,20,7,6,43,1,34, +39,38,61,1,5,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,1,155,9,8,10,18,192,18,10,8, +9,96,9,18,18,9,96,123,12,11,17,144,17,11,12,12,11,17,144,17,11,12,254,224,1,36,37,54,54,37,36,1, +1,36,37,54,54,37,36,1,1,16,16,16,15,15,17,15,160,15,1,1,15,160,136,17,11,12,12,11,17,144,17,11, +12,12,11,17,144,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,0,0,0,1,0,19,255,192,1,236, +1,192,0,42,0,0,37,7,6,47,1,21,6,7,35,38,39,53,7,6,47,1,38,63,1,39,38,63,1,54,31,1, +39,54,55,51,22,23,21,55,54,31,1,22,15,1,23,22,7,1,233,24,13,20,129,2,22,48,22,2,128,20,13,24, +9,18,129,129,18,9,24,13,20,129,1,2,22,48,22,2,129,20,13,24,9,18,128,129,18,10,85,42,18,9,75,149, +22,2,2,22,149,75,9,18,42,20,12,75,74,13,20,42,18,9,75,149,22,2,2,22,149,75,9,18,42,20,12,75, +75,12,20,0,0,6,0,0,255,192,2,0,1,192,0,26,0,49,0,67,0,85,0,103,0,121,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,7,53,38,39,6,7,21,6,7, +6,21,22,23,22,23,54,55,54,55,52,39,38,47,1,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +7,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,50,55,49,54,53,52,39,38,35,34,7,6,21, +20,23,22,51,39,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,2,0,1,34,34,58,57,72,72,57, +58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,232,2,22,22,2,18,11,11,1,18,18,27,27,18,18,1, +11,11,18,136,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,1,64,14, +9,9,9,9,14,14,9,9,9,9,14,48,14,9,9,9,9,14,14,9,9,9,9,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,37,205,22,2,2,22,205,7,16,16,20,27,18,18,1, +1,18,18,27,20,16,16,7,117,9,9,14,14,9,9,9,9,14,14,9,9,48,9,9,14,14,9,9,9,9,14,14, +9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,176,9,9,14,14,9,9,9,9,14,14,9,9,0,6,0,0, +255,192,2,0,1,192,0,26,0,44,0,71,0,89,0,107,0,125,0,0,37,6,7,49,6,7,49,6,7,38,39,38, +39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38, +35,17,54,55,49,54,55,38,39,55,54,39,38,15,1,34,49,38,49,6,7,6,7,22,23,22,23,49,3,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,7,50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51, +37,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,35,2,0,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,255,0,14,9,9,9,9,14,14,9,9,9,9,14,27,18,18,1,1,17, +63,8,19,21,11,64,1,1,27,18,18,1,1,18,18,27,112,14,9,9,9,9,14,14,9,9,9,9,14,48,14,9, +9,9,9,14,14,9,9,9,9,14,1,64,14,9,9,9,9,14,14,9,9,9,9,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,192,9,9,14,14,9,9,9,9,14,14,9,9,254,160, +1,18,18,27,27,18,145,21,11,7,19,146,1,1,18,19,27,27,18,18,1,1,48,9,9,14,14,9,9,9,9,14, +14,9,9,176,9,9,14,14,9,9,9,9,14,14,9,9,64,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,49,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,53,38,39,6,7,21,6,7,6,21,22,23,22,23,54,55,54,55,52,39, +38,39,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,232,2,22,22, +2,18,11,11,1,18,18,27,27,18,18,1,11,11,18,192,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34, +34,1,1,34,34,58,57,72,37,205,22,2,2,22,205,7,16,16,20,27,18,18,1,1,18,18,27,20,16,16,7,0, +0,2,0,0,255,192,2,0,1,192,0,26,0,52,0,0,37,6,7,49,6,7,49,6,7,38,39,38,39,38,39,54, +55,54,55,54,55,22,23,22,23,22,23,7,55,54,39,38,15,1,34,35,38,35,6,7,6,7,22,23,22,23,54,55, +54,55,38,39,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,207, +76,9,19,20,12,77,1,1,2,3,26,19,18,1,1,18,19,26,28,18,18,1,1,14,192,72,57,58,34,34,1,1, +34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,54,147,20,12,9,19,147,1,1,18,19,27,27,18,18, +1,1,18,18,27,24,18,0,0,9,0,0,255,224,2,64,1,160,0,20,0,37,0,53,0,70,0,86,0,103,0,119, +0,136,0,152,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,1,6,7,49,6, +7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7,49, +6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7, +49,6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6, +7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,1, +224,254,128,41,27,27,1,1,27,27,41,1,128,41,27,27,1,1,27,27,41,254,176,1,13,14,20,20,14,13,1,1, +15,64,15,1,1,15,64,15,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1, +13,68,13,1,1,13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1,13,68,13,1,1, +13,14,20,20,14,13,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,1,15,64,15,1,1,13,14,20,20,14, +13,1,1,160,1,27,27,41,255,0,41,27,27,1,1,27,27,41,1,0,41,27,27,1,254,208,20,14,13,1,1,13, +14,20,32,15,1,1,15,32,96,15,1,1,15,32,20,14,13,1,1,13,14,20,32,96,20,14,13,1,1,13,14,20, +32,15,1,1,15,32,94,13,1,1,13,66,20,14,13,1,1,13,14,20,66,94,20,14,13,1,1,13,14,20,32,15, +1,1,15,32,94,13,1,1,13,66,20,14,13,1,1,13,14,20,66,94,20,14,13,1,1,13,14,20,32,15,1,1, +15,32,96,15,1,1,15,32,20,14,13,1,1,13,14,20,32,0,0,0,0,10,0,0,255,224,2,64,1,160,0,20, +0,37,0,54,0,71,0,88,0,109,0,125,0,141,0,157,0,173,0,0,37,33,6,7,6,7,21,22,23,22,23,33, +54,55,54,55,53,38,39,38,39,5,6,7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,51,6,7,49,6,7, +38,39,38,39,53,54,55,51,22,23,21,51,6,7,49,6,7,38,39,38,39,53,54,55,51,22,23,21,51,6,7,49, +6,7,38,39,38,39,53,54,55,51,22,23,21,3,33,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39, +38,39,5,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,23,6,7,35,38,39,53,54,55,54,55,22,23,22, +23,21,51,6,7,35,38,39,53,54,55,54,55,22,23,22,23,21,55,6,7,35,38,39,53,54,55,54,55,22,23,22, +23,21,2,0,254,64,27,18,18,1,1,27,27,41,1,128,41,27,27,1,1,18,18,27,254,144,1,13,14,20,20,14, +13,1,1,15,64,15,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,128,1,13,14,20,20,14,13,1,1,15, +64,15,1,128,1,13,14,20,20,14,13,1,1,15,64,15,1,48,254,128,41,27,27,1,1,18,18,27,1,192,27,18, +18,1,1,27,27,41,254,176,1,15,64,15,1,1,13,14,20,20,14,13,1,128,1,13,68,13,1,1,13,14,20,20, +14,13,1,128,1,13,68,13,1,1,13,14,20,20,14,13,1,128,1,15,64,15,1,1,13,14,20,20,14,13,1,160, +1,18,18,27,32,41,27,27,1,1,27,27,41,32,27,18,18,1,80,20,14,13,1,1,13,14,20,32,15,1,1,15, +32,20,14,13,1,1,13,14,20,32,15,1,1,15,32,20,14,13,1,1,13,14,20,32,15,1,1,15,32,20,14,13, +1,1,13,14,20,32,15,1,1,15,32,1,80,1,27,27,41,64,27,18,18,1,1,18,18,27,64,41,27,27,1,176, +15,1,1,15,32,20,14,13,1,1,13,14,20,32,2,13,1,1,13,66,20,14,13,1,1,13,14,20,66,13,1,1, +13,66,20,14,13,1,1,13,14,20,66,2,15,1,1,15,32,20,14,13,1,1,13,14,20,32,0,0,0,7,0,0, +255,192,2,127,1,192,0,8,0,49,0,66,0,94,0,114,0,128,0,145,0,0,55,6,7,49,6,23,54,63,1,7, +39,52,49,48,49,54,51,50,51,50,51,54,55,54,55,38,39,38,35,34,7,6,7,6,31,1,22,23,22,23,22,51, +50,55,38,39,38,39,38,39,55,38,39,6,7,6,39,6,23,22,23,22,55,54,55,54,39,37,38,39,49,38,7,6, +7,6,15,1,6,23,22,23,22,23,22,55,54,55,54,63,1,54,39,38,39,5,54,55,49,54,23,22,23,22,7,6, +7,38,39,38,7,38,55,52,51,23,38,39,49,38,55,22,23,22,55,6,7,6,39,55,38,39,38,7,38,55,54,55, +54,23,22,23,22,7,6,7,207,27,16,16,1,18,32,8,111,32,89,100,2,1,1,1,21,31,28,29,15,27,36,36, +116,104,18,9,8,3,32,8,36,36,44,45,35,6,4,21,18,38,34,34,6,97,1,3,13,22,23,16,1,1,3,13, +13,17,17,9,9,3,1,158,67,75,74,76,21,15,14,4,32,6,26,27,39,39,33,33,48,49,40,41,9,32,3,8, +9,18,254,239,3,13,13,17,17,9,9,3,1,3,13,22,23,17,1,1,1,69,42,25,24,2,33,67,67,45,12,33, +34,44,131,13,22,23,16,1,1,3,13,13,17,17,9,9,3,1,3,203,9,20,20,25,19,12,43,50,179,3,49,21, +5,4,1,22,5,6,57,11,18,19,22,179,41,32,32,18,19,1,26,41,11,24,24,26,137,7,5,14,5,3,9,6, +6,17,9,9,2,3,14,13,16,37,37,13,13,12,3,14,15,21,181,44,46,45,33,32,7,5,17,18,33,34,44,179, +22,19,19,10,97,17,9,9,2,4,13,13,17,6,5,14,4,4,9,6,5,1,199,9,31,32,41,41,13,10,26,39, +21,21,6,152,14,4,4,9,6,6,17,9,9,3,3,13,13,17,6,5,0,4,0,0,255,192,1,64,1,192,0,20, +0,38,0,56,0,74,0,0,1,22,23,49,22,23,17,6,7,6,7,38,39,38,39,17,54,55,54,55,51,3,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,53,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,53,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,0,27,18,18,1,2,45,45,68,68,45,45, +2,1,18,18,27,192,96,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,192,1,18,18,27,254,224,68, +45,45,2,2,45,45,68,1,32,27,18,18,1,254,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,32, +1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,224,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,0,0,0,0,6,0,0,255,192,2,128,1,192,0,55,0,60,0,117,0,135,0,193,0,211,0,0,1,23,51,50, +23,22,29,1,50,23,22,21,20,7,6,7,38,39,38,35,34,7,6,7,35,38,39,38,35,34,7,6,7,38,39,38, +53,52,55,54,51,53,52,55,54,59,1,53,54,55,54,55,51,22,23,49,7,51,39,35,21,7,22,23,22,23,54,31, +1,22,7,22,23,22,23,21,6,7,6,7,22,15,1,6,39,6,7,6,7,35,38,39,38,39,6,47,1,38,55,38, +39,38,39,53,54,55,54,55,38,63,1,54,23,54,55,54,55,23,7,54,55,49,54,55,38,39,38,39,6,7,6,7, +22,23,22,23,37,54,55,51,22,23,22,23,54,31,1,22,7,22,23,22,23,21,6,7,6,7,22,15,1,6,39,6, +7,6,7,35,38,39,38,39,6,47,1,38,55,38,39,38,39,53,54,55,54,55,38,63,1,54,23,54,55,49,23,6, +7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,1,163,77,80,14,9,9,14,9,9,9,9,14,22,33,33, +40,40,33,33,23,63,22,33,33,40,40,33,33,22,14,9,9,9,9,14,9,9,14,160,1,13,14,20,96,32,19,131, +128,48,80,120,20,4,11,11,16,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15,16,11,11,4,21,16,18, +5,11,10,17,15,11,13,11,6,3,20,2,2,20,3,6,11,13,11,15,17,10,11,5,18,17,8,20,14,13,1,1, +13,14,20,20,14,13,1,1,13,14,20,1,32,4,20,16,20,4,11,11,16,15,11,13,11,6,3,19,2,2,19,3, +6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15, +17,10,11,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,166,102,9,9,14,64,9,9,14,14,8, +9,1,30,17,17,17,17,30,30,17,17,17,17,30,1,9,8,14,14,9,9,64,14,9,9,80,20,14,13,1,1,25, +102,64,64,128,2,19,3,6,11,13,11,15,17,10,11,4,20,16,20,4,11,11,16,15,11,13,11,6,3,19,2,2, +19,3,6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13,11,6,3,20,2,1,176,1,13,14,20, +20,14,13,1,1,13,14,20,20,14,13,1,155,19,2,2,19,3,6,11,13,11,15,17,10,11,4,20,16,20,4,11, +11,16,15,11,13,11,6,3,19,2,2,19,3,6,11,13,11,15,16,11,11,4,20,16,20,4,11,10,17,15,11,13, +11,6,3,59,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,4,0,0,255,224,2,128,1,160,0,65, +0,70,0,88,0,106,0,0,1,51,22,31,1,51,50,23,22,29,1,50,23,22,21,20,7,6,43,1,22,21,6,7, +6,7,38,39,38,39,52,55,35,22,21,6,7,6,7,38,39,38,39,52,55,35,34,39,38,53,52,55,54,51,53,52, +55,54,59,1,53,54,55,54,55,49,23,35,21,51,39,3,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22, +23,33,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,1,16,97,30,20,108,49,14,9,9,14,9,9, +9,9,14,33,1,1,32,31,48,48,31,32,1,1,66,1,1,32,31,48,48,31,32,1,1,33,14,9,9,9,9,14, +9,9,14,160,1,13,14,20,97,81,157,76,193,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,160,1,23,136,9,9,14,64,9,9,14,14,9,9,8,8, +48,31,32,1,1,32,31,48,8,8,8,8,48,31,32,1,1,32,31,48,8,8,9,9,14,14,9,9,64,14,9,9, +112,20,14,13,1,64,96,96,254,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14, +13,1,1,13,14,20,20,14,13,1,0,0,0,5,0,0,255,224,2,64,1,160,0,3,0,12,0,34,0,52,0,75, +0,0,55,23,35,55,23,6,7,38,39,54,55,22,23,55,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17, +54,55,54,55,33,5,38,39,6,15,1,6,23,22,63,1,51,23,22,55,54,47,1,23,38,35,6,7,6,7,22,23, +22,23,50,55,22,51,54,55,53,38,39,6,7,21,208,21,42,21,208,2,22,22,2,2,22,22,2,96,27,18,18,1, +1,18,18,27,254,64,27,18,18,1,1,18,18,27,1,192,254,230,7,15,14,7,72,8,18,21,12,5,90,6,11,21, +18,7,72,186,11,13,31,20,20,1,1,20,20,31,17,14,7,10,22,2,2,22,22,2,210,42,42,42,22,2,2,22, +22,2,2,22,248,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,141,12,1,1,12,144,21, +12,7,18,11,11,18,7,12,21,144,39,4,1,20,20,31,31,20,20,1,8,8,2,22,144,22,2,2,22,28,0,0, +0,2,0,0,255,192,1,64,1,192,0,37,0,50,0,0,37,35,54,55,54,53,38,39,38,39,6,7,6,7,20,23, +22,23,35,6,7,21,22,23,51,21,22,23,51,54,55,53,51,54,55,53,38,47,1,22,23,6,7,6,7,38,39,38, +39,54,55,1,40,45,17,10,10,1,36,37,54,54,37,36,1,10,10,17,45,22,2,2,22,96,2,22,32,22,2,96, +22,2,2,22,136,46,2,1,15,15,17,17,15,15,1,2,46,192,26,29,29,28,67,38,38,1,1,38,38,67,28,29, +29,26,2,22,32,22,2,152,22,2,2,22,152,2,22,32,22,2,176,2,62,27,28,28,18,18,28,28,27,62,2,0, +0,3,0,0,255,192,1,192,1,192,0,25,0,54,0,66,0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23, +22,23,33,50,55,54,53,38,39,53,54,55,37,54,63,1,53,54,55,51,22,23,21,51,22,23,21,6,15,1,21,6, +7,35,38,39,53,35,38,39,53,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27, +1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,208,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15, +32,15,1,48,15,1,240,254,224,14,9,9,9,9,14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27, +27,1,9,9,13,18,9,82,14,22,192,14,1,1,48,14,1,1,14,48,2,13,32,15,1,1,112,15,1,1,15,112, +1,15,32,254,208,9,9,14,14,9,9,64,0,5,0,0,255,192,2,128,1,192,0,17,0,32,0,50,0,81,0,86, +0,0,37,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,23,35,38,39,53,54,55,22,23,21,51,22, +23,6,7,39,35,38,39,53,35,21,22,23,22,23,33,38,39,52,53,52,53,55,50,23,53,38,39,38,39,35,53,38, +39,38,39,35,6,7,6,7,21,35,6,7,6,7,21,33,54,55,54,51,39,35,53,51,21,1,240,61,41,40,2,2, +40,41,61,61,41,40,2,2,40,41,61,48,54,9,1,1,15,15,1,32,15,1,1,15,224,112,15,1,192,1,13,14, +20,1,56,39,1,176,8,8,1,13,14,20,80,1,13,14,20,160,20,14,13,1,80,20,14,13,1,1,104,25,35,35, +41,160,160,160,224,2,40,41,61,61,41,40,2,2,40,41,61,61,41,40,2,160,1,9,70,15,1,1,15,48,1,15, +15,1,32,1,15,48,144,20,14,13,1,47,65,3,3,5,5,160,1,49,20,14,13,1,48,20,14,13,1,1,13,14, +20,48,1,13,14,20,112,30,17,17,96,48,48,0,0,0,0,12,0,0,255,192,2,128,1,192,0,46,0,59,0,72, +0,85,0,98,0,111,0,124,0,137,0,150,0,163,0,176,0,189,0,0,1,51,22,23,22,23,21,6,7,6,7,33, +38,39,38,39,17,54,55,54,55,51,53,54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,54,55,51,22,23, +22,23,21,23,38,39,35,6,7,21,22,23,51,54,55,53,5,54,55,53,38,39,35,6,7,21,22,23,51,39,38,39, +35,6,7,21,22,23,51,54,55,53,37,6,7,21,22,23,51,54,55,53,38,39,35,37,38,39,35,6,7,21,22,23, +51,54,55,53,39,6,7,21,22,23,51,54,55,53,38,39,35,23,38,39,35,6,7,21,22,23,51,54,55,53,7,54, +55,53,38,39,35,6,7,21,22,23,51,37,38,39,35,6,7,21,22,23,51,54,55,53,39,6,7,21,22,23,51,54, +55,53,38,39,35,23,38,39,35,6,7,21,22,23,51,54,55,53,1,224,112,20,14,13,1,1,13,14,20,253,224,20, +14,13,1,1,13,14,20,16,2,22,22,2,64,2,22,22,2,64,1,13,14,20,96,20,14,13,1,96,1,15,32,15, +1,1,15,32,15,1,254,176,15,1,1,15,32,15,1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,1,144,15, +1,1,15,32,15,1,1,15,32,254,240,1,15,32,15,1,1,15,32,15,1,176,15,1,1,15,32,15,1,1,15,32, +176,1,15,32,15,1,1,15,32,15,1,144,15,1,1,15,32,15,1,1,15,32,1,48,1,15,32,15,1,1,15,32, +15,1,48,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,1,0,1,13,14,20,224,20, +14,13,1,1,13,14,20,1,64,20,14,13,1,72,22,2,2,22,72,72,22,2,2,22,72,48,20,14,13,1,1,13, +14,20,144,176,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15,32,15, +1,1,15,32,112,1,15,32,15,1,1,15,32,15,1,80,15,1,1,15,32,15,1,1,15,32,16,1,15,32,15,1, +1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,48,1,15,32,15,1,1,15,32,15,1,48,15,1,1,15, +32,15,1,1,15,32,208,1,15,32,15,1,1,15,32,15,1,112,15,1,1,15,32,15,1,1,15,32,0,2,0,0, +255,225,1,255,1,161,0,36,0,103,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54, +55,54,55,22,51,54,55,54,55,54,55,38,39,38,39,38,39,23,6,7,21,6,7,38,39,53,38,47,1,38,55,54, +31,1,50,49,22,23,22,55,54,55,48,49,54,39,38,47,1,52,49,38,39,38,55,54,55,53,54,55,22,23,21,22, +23,22,7,6,39,38,39,38,7,6,7,6,23,22,31,1,22,23,22,7,1,0,71,58,57,34,34,1,2,55,12,20, +20,3,4,2,1,6,50,36,36,19,49,58,71,58,57,34,34,1,1,34,34,57,58,71,62,7,35,2,18,18,2,13, +12,4,17,5,7,18,4,1,12,11,11,9,9,1,2,4,4,21,6,16,19,19,3,7,35,2,18,18,2,8,11,16, +4,8,18,9,8,11,9,9,1,2,4,3,16,6,19,21,20,3,1,161,1,27,28,47,47,58,75,56,39,27,28,2, +5,4,4,1,17,17,16,19,1,27,28,47,46,58,58,47,47,28,28,1,251,32,8,10,18,2,2,18,11,3,4,2, +8,17,17,4,2,5,2,2,2,2,5,4,3,4,6,1,1,3,12,13,31,32,9,9,18,2,2,18,11,1,4,8, +17,17,4,4,1,2,2,2,6,2,4,3,5,2,4,13,13,31,0,0,0,3,0,0,255,192,2,128,1,192,0,27, +0,94,0,131,0,0,1,38,39,49,38,39,6,7,6,7,22,23,6,7,6,7,6,23,22,51,54,55,22,23,54,55, +54,55,7,6,7,21,6,7,38,39,53,38,47,1,38,55,54,31,1,50,49,22,23,22,55,54,55,52,49,54,39,38, +47,1,52,49,38,39,38,55,54,55,53,54,55,22,23,21,22,23,22,7,6,39,38,39,38,7,6,7,6,23,22,31, +1,22,23,22,7,5,54,55,38,39,38,39,48,49,34,49,20,21,22,21,6,7,6,7,22,23,22,23,54,55,22,23, +50,55,54,39,48,49,38,39,38,39,1,160,2,59,59,88,88,59,59,2,1,41,14,12,13,1,3,2,2,5,58,37, +47,58,88,59,59,2,146,7,35,2,18,18,2,13,12,4,17,5,7,18,4,1,12,11,11,9,9,1,2,4,4,21, +6,16,19,19,3,7,35,2,18,18,2,8,11,16,4,8,18,9,8,11,9,9,1,2,4,3,16,7,18,21,20,3, +1,74,39,1,2,54,54,82,1,1,2,51,52,81,17,50,50,69,51,42,37,54,5,2,2,3,3,11,12,12,1,16, +75,49,50,2,2,50,49,75,60,45,25,16,16,1,4,4,5,2,22,23,1,2,50,49,75,42,31,9,10,18,2,2, +18,11,3,4,2,8,17,17,4,2,5,2,2,2,2,5,1,3,3,4,6,1,1,3,12,13,31,32,8,10,18,2, +2,18,11,1,4,7,18,17,4,4,1,2,2,2,6,2,4,3,5,2,4,13,13,31,226,46,62,75,49,50,2,1, +1,7,7,75,55,55,18,58,37,37,1,1,21,20,2,5,4,4,2,15,15,23,0,0,0,1,0,0,255,192,1,127, +1,192,0,44,0,0,1,21,20,7,6,43,1,21,20,7,6,43,1,34,39,38,61,1,35,34,39,38,61,1,52,55, +54,59,1,53,52,55,54,59,1,50,23,22,29,1,51,50,23,22,21,1,127,9,9,13,96,9,9,13,65,14,9,9, +96,14,9,9,9,9,14,96,9,9,14,64,14,8,9,96,14,9,9,1,32,64,14,9,9,224,14,9,9,9,9,14, +224,9,9,14,64,14,9,9,96,14,9,9,9,9,14,96,9,9,14,0,0,10,0,0,255,192,2,0,1,192,0,72, +0,79,0,86,0,93,0,100,0,107,0,125,0,132,0,139,0,146,0,0,37,7,38,39,55,54,47,1,38,15,1,38, +39,55,38,39,35,6,7,23,6,7,39,38,15,1,6,31,1,6,7,39,6,7,21,22,23,55,22,23,7,6,31,1, +22,63,1,22,23,7,22,23,51,54,55,39,54,55,23,22,63,1,54,47,1,54,55,23,54,55,53,38,47,1,22,23, +7,38,39,55,35,23,6,7,39,54,55,7,23,6,7,39,54,55,7,55,22,23,7,38,39,23,38,39,55,22,23,7, +55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,39,54,55,23,6,7,55,39,54,55,23,6,7, +39,38,39,55,22,23,7,1,239,17,9,35,12,10,9,20,13,11,11,46,60,1,1,15,30,15,1,1,60,46,11,11, +12,22,9,10,12,35,8,17,15,2,2,15,17,9,35,12,10,9,22,11,12,11,46,60,2,1,15,30,15,1,1,60, +46,11,11,13,21,9,10,12,35,9,16,15,2,2,15,213,37,30,42,14,15,4,52,4,15,13,43,30,37,104,49,9, +3,64,6,21,27,64,3,9,49,21,6,131,37,30,42,14,15,4,26,14,9,9,9,9,14,14,9,9,9,9,14,26, +4,15,14,42,30,37,104,49,9,3,64,6,21,37,3,9,49,21,6,64,223,1,60,46,11,11,13,21,9,10,12,35, +9,16,15,2,2,15,17,9,35,13,10,9,22,12,11,11,46,60,1,1,15,30,15,1,1,60,46,11,11,12,22,9, +10,12,35,9,16,15,2,2,15,17,9,35,12,10,9,22,11,12,11,46,60,2,1,15,30,15,1,126,6,21,49,9, +3,64,64,3,9,49,21,6,64,42,14,15,4,37,30,119,4,15,14,42,30,37,131,6,21,49,9,3,64,125,9,9, +14,14,9,9,9,9,14,14,9,9,125,64,3,9,49,21,6,64,42,14,15,4,37,30,115,15,14,42,30,37,4,0, +0,4,0,0,255,192,2,0,1,192,0,17,0,65,0,76,0,87,0,0,37,6,47,1,21,22,23,22,23,33,54,55, +54,55,53,7,6,35,55,38,39,53,38,39,38,43,1,38,35,38,39,38,39,38,39,38,39,6,7,6,7,6,7,6, +7,34,7,35,6,7,6,7,21,6,7,6,29,1,23,53,33,21,55,53,52,39,5,51,54,55,38,39,35,6,7,22, +23,53,51,54,55,38,39,35,6,7,22,23,1,0,25,22,209,1,13,14,20,1,160,20,14,13,1,209,22,25,238,13, +17,1,13,14,20,77,1,1,4,4,4,5,14,17,18,15,15,18,17,14,5,4,4,4,1,1,77,20,14,13,1,17, +13,18,96,1,64,96,18,254,194,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,160,15,1,1,15,31,1,16, +151,213,20,14,13,1,1,13,13,20,214,151,15,254,10,13,44,20,14,14,1,3,3,3,4,11,11,11,1,1,11,11, +11,4,4,2,3,1,1,13,14,20,44,13,10,15,23,10,70,185,185,70,10,23,15,92,1,14,15,1,1,15,14,1, +64,1,15,14,1,2,13,15,1,0,0,0,0,2,0,0,255,224,2,0,1,160,0,22,0,33,0,0,1,35,39,35, +6,7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,7,35,38,39,54,55,51,22,23,6,7,1,208, +192,64,160,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,128,161,21,2,2,21,160,23,2,2,22, +1,96,64,1,13,14,20,254,160,20,14,13,1,1,13,14,20,1,32,20,14,13,1,215,1,22,21,2,1,22,22,1, +0,2,0,0,255,224,2,0,1,160,0,22,0,47,0,0,1,35,39,35,6,7,6,7,17,22,23,22,23,33,54,55, +54,55,17,38,39,38,39,7,35,21,6,7,38,39,53,35,38,39,54,55,51,53,54,55,22,23,21,51,22,23,6,7, +1,208,192,64,160,20,14,13,1,1,13,14,20,1,160,20,14,13,1,1,13,14,20,128,56,3,21,22,1,58,21,2, +2,21,56,3,22,22,1,56,23,2,2,22,1,96,64,1,13,14,20,254,160,20,14,13,1,1,13,14,20,1,32,20, +14,13,1,215,56,23,2,2,21,58,1,22,21,2,58,21,2,2,21,57,2,22,22,1,0,3,0,0,255,192,2,64, +1,192,0,24,0,42,0,127,0,0,19,54,55,33,22,23,22,15,1,6,7,6,7,22,23,38,47,1,38,61,1,39, +38,55,49,1,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,54,51,50,23,22,55,54,39,38,39, +53,38,39,6,7,21,6,7,6,7,22,23,22,31,1,22,23,22,7,48,21,22,7,22,7,6,39,34,39,34,39,38, +39,38,7,6,23,50,51,50,23,22,23,21,22,23,54,55,53,54,55,54,53,38,39,38,39,48,35,49,34,49,38,39, +38,55,48,49,53,52,55,54,55,49,4,11,25,1,176,25,11,10,16,106,61,39,40,1,1,18,3,2,64,13,183,15, +10,2,60,2,40,41,61,61,41,41,2,2,41,41,61,61,41,40,2,163,9,10,12,14,15,5,2,14,9,9,1,15, +15,1,9,10,20,1,4,18,14,14,2,15,8,5,1,1,2,1,5,7,10,14,14,1,1,3,3,15,5,3,13,1, +1,1,2,11,13,1,15,15,1,9,9,21,2,17,15,15,1,1,15,8,6,1,1,1,3,1,169,22,1,1,22,23, +19,131,13,47,47,65,41,36,2,1,48,10,16,79,224,19,23,254,167,61,41,40,2,2,40,41,61,61,41,40,2,2, +40,41,61,37,3,4,2,14,14,5,2,2,9,15,1,1,15,10,1,5,9,28,23,8,7,2,2,4,4,3,2,1, +3,1,1,2,4,1,5,1,1,1,3,14,14,6,2,3,3,12,14,2,2,14,11,2,4,10,27,24,9,7,4,4, +4,4,1,1,2,1,1,3,0,3,0,0,255,192,2,0,1,192,0,101,0,114,0,126,0,0,19,22,23,21,51,53, +54,55,22,23,21,51,53,54,55,22,23,21,51,53,54,55,22,23,21,50,23,22,29,1,50,23,22,29,1,50,23,22, +29,1,20,7,6,43,1,53,35,53,35,53,35,21,51,21,51,21,35,53,38,39,38,39,6,7,6,7,21,35,53,51, +53,51,53,35,21,35,21,35,21,35,34,39,38,61,1,52,55,54,51,53,52,55,54,51,53,52,55,54,51,53,54,55, +19,34,7,49,6,29,1,51,53,52,39,38,35,39,51,53,52,39,38,35,34,7,6,29,1,120,22,2,40,2,22,22, +2,48,2,22,22,2,40,2,22,22,2,14,9,9,14,9,9,14,9,9,9,9,14,64,32,32,32,32,32,80,1,13, +14,20,20,14,13,1,80,32,32,32,32,32,64,14,9,9,9,9,14,9,9,14,9,9,14,2,22,136,14,9,9,64, +9,9,14,32,64,9,9,14,14,9,9,1,192,2,22,8,8,22,2,2,22,8,8,22,2,2,22,8,8,22,2,2, +22,104,9,9,14,64,9,9,14,96,9,9,14,96,14,9,9,160,128,96,96,128,160,48,20,14,13,1,1,13,14,20, +48,160,128,96,96,128,160,9,9,14,96,14,9,9,96,14,9,9,64,14,9,9,104,22,2,254,240,9,9,14,48,48, +14,9,9,48,32,14,9,9,9,9,14,32,0,3,0,0,255,192,1,255,1,192,0,58,0,85,0,103,0,0,37,38, +39,35,53,52,39,38,39,34,7,6,29,1,6,7,35,38,39,53,52,39,38,39,34,7,6,7,21,20,7,35,38,39, +53,52,39,38,39,34,7,6,7,21,35,6,7,6,31,1,22,23,22,51,54,63,1,54,39,7,38,39,49,38,39,49, +38,53,52,55,54,55,54,55,22,23,22,23,22,21,20,7,6,7,6,7,53,34,7,49,6,21,20,23,22,51,50,55, +54,53,52,39,38,35,1,253,9,20,64,12,11,17,17,11,12,1,9,20,9,1,11,11,17,17,12,12,1,10,20,8, +2,12,11,17,17,11,11,1,63,20,9,8,14,102,27,38,37,43,87,58,102,14,8,253,27,21,22,13,13,13,13,22, +21,27,27,21,22,13,13,13,13,22,21,27,14,9,9,9,9,14,14,9,9,9,9,14,141,18,1,208,16,12,11,1, +12,11,17,134,9,1,1,8,175,16,12,11,1,12,11,17,174,9,1,1,9,134,16,12,11,1,12,11,17,208,1,18, +19,16,110,29,15,16,1,59,110,16,19,109,1,16,15,15,16,1,1,16,15,15,16,1,1,16,15,15,16,1,1,16, +15,15,16,1,96,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0,255,192,2,0,1,192,0,56, +0,75,0,0,37,39,55,54,39,38,15,1,39,38,35,34,15,1,39,38,7,6,31,1,7,6,7,6,31,1,7,6, +23,22,51,50,51,55,7,22,23,50,63,1,23,22,51,54,55,39,23,22,55,54,47,1,55,54,39,38,39,7,39,23, +39,7,55,7,55,39,55,39,23,55,23,55,7,23,7,23,1,240,110,42,4,9,9,12,94,35,5,13,11,5,34,94, +13,9,9,4,42,110,14,2,2,12,98,75,7,4,5,12,2,2,108,4,2,17,8,6,68,68,6,8,17,2,4,108, +14,6,6,8,75,98,12,2,2,14,157,52,2,33,33,2,51,35,47,53,20,45,15,16,45,19,53,47,36,245,16,104, +14,7,8,6,60,107,13,13,107,60,6,7,8,14,104,16,3,12,12,7,53,83,10,10,11,24,113,18,1,7,89,89, +7,1,18,113,24,2,11,11,11,83,53,7,12,12,3,109,12,54,42,42,54,12,40,25,8,50,29,51,51,29,50,8, +25,40,0,0,0,1,0,16,255,192,2,47,1,192,0,124,0,0,37,7,51,6,7,6,7,38,39,38,39,51,39,38, +53,52,55,52,53,51,39,54,55,54,55,54,51,22,23,22,7,6,21,22,23,22,23,20,7,6,7,6,23,22,23,22, +23,55,7,6,39,38,63,1,39,38,39,54,63,1,39,38,55,54,31,1,19,54,55,22,23,19,55,54,23,22,15,1, +23,22,23,6,15,1,23,22,7,6,47,1,23,54,55,54,55,54,39,38,39,38,55,52,55,54,55,52,39,38,55,54, +55,50,23,22,23,22,23,7,51,20,23,20,21,22,7,2,43,59,40,33,66,65,85,84,65,65,33,40,59,5,1,47, +41,11,28,27,42,4,5,8,5,5,3,10,2,56,6,1,6,25,10,10,6,8,27,26,37,2,27,5,5,4,3,20, +42,6,1,1,6,42,20,3,4,5,5,30,12,1,6,7,1,12,30,5,5,4,3,20,42,6,1,1,6,42,20,3, +4,5,5,27,2,37,26,27,8,6,10,10,25,6,1,6,57,1,10,3,5,5,8,5,4,42,27,28,11,41,47,1, +1,5,155,59,72,43,43,2,1,44,43,72,59,26,26,5,5,4,3,41,50,41,42,29,4,1,7,7,8,25,26,70, +44,5,7,8,5,23,31,30,33,37,26,26,8,66,19,3,4,4,6,34,8,2,6,6,2,9,33,6,4,4,3,21, +1,32,7,1,1,7,254,224,21,3,4,4,6,33,9,2,6,6,2,9,33,6,4,4,3,18,65,8,26,26,37,33, +30,31,23,5,8,7,5,43,71,26,25,8,7,7,1,3,30,42,41,50,41,3,4,5,5,26,26,0,0,3,0,0, +255,192,1,192,1,192,0,25,0,154,0,166,0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23,22,23,33,50, +55,54,53,38,39,53,54,55,37,23,22,55,54,47,1,54,55,6,23,22,23,6,23,22,23,55,7,6,35,34,39,38, +53,52,63,1,39,38,53,52,63,1,39,38,55,54,31,1,55,54,51,50,31,1,55,54,51,48,49,50,23,22,15,1, +23,22,21,20,15,1,23,22,7,6,35,34,47,1,23,54,55,54,39,54,55,54,39,22,23,7,6,23,22,63,1,22, +21,48,21,48,21,7,6,21,20,23,20,49,22,51,50,55,48,49,55,6,7,6,7,38,39,38,39,23,22,51,50,55, +54,47,1,52,49,52,49,52,55,19,33,34,39,38,53,52,55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27, +1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,197,21,6,6,4,4,27,16,31,13,4,4,19,22,9,10,31, +2,11,1,1,1,2,1,1,8,18,3,3,18,8,2,2,3,2,12,5,1,3,3,1,5,14,1,1,2,2,1,2, +8,17,3,3,17,9,1,1,2,2,1,1,13,2,31,11,8,22,19,4,4,13,31,16,27,4,4,6,6,21,5,37, +3,1,4,3,2,3,24,10,29,29,41,41,29,29,10,24,2,3,5,3,1,4,37,5,251,254,224,14,9,9,9,9, +14,1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,176,22,4,4, +6,6,26,32,17,21,23,23,15,24,32,30,8,33,7,1,1,2,1,1,1,14,4,1,3,3,1,4,14,3,2,2, +2,8,111,4,4,112,9,1,2,2,2,14,4,1,3,3,1,3,15,2,2,2,1,8,34,8,30,32,24,15,23,23, +21,17,32,26,6,6,4,4,22,16,16,1,1,32,3,3,2,2,1,3,1,21,38,23,24,1,1,24,24,38,21,2, +5,5,4,32,1,1,16,16,254,224,9,9,14,14,9,9,64,0,0,0,0,6,0,0,255,192,2,64,1,192,0,14, +0,19,0,49,0,60,0,71,0,88,0,0,1,54,23,5,22,23,21,5,6,39,37,53,54,55,37,23,55,39,7,31, +1,37,21,7,6,23,22,63,1,21,6,7,5,6,39,37,38,39,53,23,22,55,54,47,1,53,5,22,55,49,39,38, +7,6,31,1,22,55,54,47,1,5,54,39,38,15,1,6,23,22,63,1,7,38,7,6,31,1,22,63,1,54,39,38, +15,1,6,47,1,1,23,9,10,1,0,21,1,254,229,5,5,254,229,1,21,1,1,9,227,227,228,228,14,1,18,53, +13,3,5,15,43,1,21,255,0,10,9,254,255,21,1,43,15,5,3,13,53,1,18,13,15,185,15,5,3,13,64,15, +5,3,13,64,1,96,13,3,5,15,64,13,3,5,15,64,224,15,5,3,13,39,13,15,39,13,3,5,15,38,5,5, +38,1,191,2,2,80,8,23,37,89,1,1,89,37,23,8,80,190,71,71,71,71,77,85,46,17,5,15,13,3,13,137, +22,9,80,3,3,80,9,23,136,13,3,13,15,5,17,46,85,5,5,2,3,13,15,5,20,3,13,15,5,20,30,5, +15,13,3,20,5,15,13,3,20,10,3,13,15,5,12,5,5,12,5,15,13,3,12,1,1,12,0,0,0,3,0,31, +255,194,2,31,1,192,0,116,0,125,0,134,0,0,1,38,7,6,23,22,23,6,7,6,15,1,53,55,54,47,1,54, +55,54,55,38,39,38,39,55,54,47,1,7,6,31,1,6,7,6,21,20,23,22,23,7,6,31,1,21,39,38,39,38, +39,52,55,54,39,38,7,6,7,6,23,22,31,1,22,63,1,23,7,34,39,34,35,6,7,22,23,54,63,1,21,6, +7,20,23,22,51,50,55,54,53,38,39,53,23,22,23,54,55,38,39,34,7,34,35,39,55,23,22,63,1,54,55,54, +39,38,39,7,6,7,39,38,63,1,22,23,35,54,55,23,22,15,1,38,39,1,192,11,9,7,5,25,1,1,18,19, +34,76,44,6,3,8,26,15,15,1,1,14,15,25,5,4,7,59,59,8,4,5,25,14,15,16,15,26,9,2,6,43, +76,33,19,18,1,25,6,8,9,11,60,24,23,25,11,20,56,8,11,80,29,47,1,1,1,1,22,2,2,22,19,4, +41,15,1,9,9,13,13,9,9,1,15,41,4,19,22,2,2,22,2,1,1,1,47,29,80,11,8,53,28,13,16,24, +25,56,96,2,27,6,13,13,8,26,1,128,1,25,8,13,13,5,28,1,1,127,5,8,9,11,40,47,41,34,35,22, +54,20,36,7,9,16,15,25,25,32,31,25,25,15,11,9,6,54,53,7,9,11,15,25,25,30,32,25,25,15,18,9, +7,36,20,54,23,34,35,40,47,40,11,8,9,6,34,62,63,70,27,22,65,9,5,42,20,33,1,2,22,21,2,2, +19,28,30,9,18,14,8,9,9,9,13,18,9,30,28,19,2,2,22,22,2,1,33,20,42,5,9,61,33,42,64,56, +56,32,111,35,18,12,38,38,17,19,33,33,19,17,38,38,12,18,35,0,0,2,0,0,255,192,2,0,1,192,0,19, +0,54,0,0,19,54,31,2,21,23,22,7,6,7,33,38,39,38,63,1,53,63,1,7,51,21,51,53,51,21,51,53, +51,21,51,53,51,21,48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,50,49,53,240,15,17,172,3,49, +20,5,7,25,254,64,22,8,5,20,47,5,172,176,64,40,64,48,64,40,64,1,1,48,18,5,8,23,254,64,23,8, +5,18,48,1,1,1,188,8,8,98,2,1,27,13,23,23,1,1,23,23,13,27,1,2,98,220,192,192,192,192,192,192, +196,1,32,14,22,22,1,1,22,22,14,32,1,196,0,0,0,5,0,32,255,192,2,96,1,192,0,17,0,37,0,53, +0,76,0,81,0,0,23,34,47,1,21,20,23,22,51,33,50,55,54,61,1,7,6,35,17,54,55,49,54,55,51,53, +52,39,38,35,33,34,7,6,29,1,51,53,23,33,34,7,6,29,1,23,22,63,1,53,52,39,38,35,37,33,34,7, +6,29,1,51,22,23,22,23,21,51,50,55,54,61,1,52,39,38,35,7,35,53,51,21,192,15,13,132,9,9,14,1, +0,14,9,9,132,13,15,1,18,18,27,224,9,9,14,254,192,14,9,9,96,128,255,0,14,9,9,151,9,9,151,9, +9,14,1,0,254,192,14,9,9,96,26,17,18,3,192,14,9,9,9,9,14,32,64,64,1,9,100,140,14,9,9,9, +9,14,140,100,9,1,1,27,18,18,1,96,14,9,9,9,9,14,192,32,64,9,9,14,12,114,6,6,114,12,14,9, +9,96,9,9,14,32,1,16,16,25,134,9,9,14,192,14,9,9,128,64,64,0,0,0,0,12,0,0,255,192,2,128, +1,192,0,8,0,28,0,37,0,57,0,77,0,97,0,156,0,165,0,185,0,205,0,225,0,234,0,0,1,38,39,35, +6,7,21,51,53,39,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,38,39,35,6,7,21, +51,53,55,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,33,50,55,49,54,53,38,39,38,39, +48,49,6,7,6,7,20,23,22,59,1,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,35, +6,7,21,20,7,6,43,1,53,38,39,35,6,7,21,35,34,39,38,61,1,38,39,35,6,7,21,22,23,22,23,51, +21,35,6,7,6,7,22,23,33,54,55,38,39,38,39,35,53,51,54,55,54,55,53,38,39,5,38,39,35,6,7,21, +51,53,55,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,35,50,55,49,54,53,38,39,38,39, +48,49,6,7,6,7,20,23,22,59,1,50,55,49,54,53,38,39,38,39,48,49,6,7,6,7,20,23,22,51,23,38, +39,35,6,7,21,51,53,2,32,1,15,32,15,1,64,128,14,9,9,2,14,14,2,2,14,14,2,9,9,14,32,1, +15,32,15,1,64,160,14,9,9,2,14,14,2,2,14,14,2,9,9,14,254,224,14,9,9,2,14,14,2,2,14,14, +2,9,9,14,192,14,9,9,2,14,14,2,2,14,14,2,9,9,14,112,32,15,1,9,9,14,192,1,15,32,15,1, +192,14,9,9,1,15,32,15,1,1,27,27,41,192,112,20,14,13,1,1,15,1,96,15,1,1,13,14,20,112,192,41, +27,27,1,1,15,254,48,1,15,32,15,1,64,64,14,9,9,2,14,14,2,2,14,14,2,9,9,14,192,14,9,9, +2,14,14,2,2,14,14,2,9,9,14,96,14,9,9,2,14,14,2,2,14,14,2,9,9,14,128,1,15,32,15,1, +64,1,48,15,1,1,15,144,144,49,9,9,14,15,23,23,2,2,23,23,15,13,9,10,49,15,1,1,15,144,144,49, +9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15, +23,23,2,2,23,23,15,13,9,10,33,1,15,144,14,9,9,176,15,1,1,15,176,9,9,14,144,15,1,1,15,144, +41,27,27,1,64,1,13,14,20,15,1,1,15,20,14,13,1,64,1,27,27,41,144,15,1,16,15,1,1,15,144,144, +49,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14,15,23,23,2,2,23,23,15,13,9,10,9,9,14, +15,23,23,2,2,23,23,15,13,9,10,49,15,1,1,15,144,144,0,0,0,4,0,0,255,192,2,128,1,192,0,34, +0,78,0,94,0,110,0,0,1,50,23,22,23,22,23,48,49,22,23,22,23,22,23,6,7,33,38,39,54,55,54,55, +54,55,48,49,54,55,54,55,54,51,49,3,38,39,6,7,21,35,34,39,38,61,1,52,55,54,51,33,50,23,22,29, +1,20,7,6,43,1,53,38,39,6,7,21,35,53,52,47,1,7,6,7,21,35,53,3,54,31,1,22,23,22,29,1, +35,53,52,55,54,63,1,7,51,21,6,7,21,20,23,6,43,1,38,39,38,39,17,1,144,8,5,26,33,33,41,5, +4,4,3,45,1,1,29,254,156,29,1,1,45,3,4,4,5,41,33,33,26,4,9,112,2,22,22,2,48,14,9,9, +9,9,14,1,160,14,9,9,9,9,14,48,2,22,22,2,64,24,24,25,22,1,64,218,10,10,16,25,15,14,160,14, +15,25,16,70,160,30,2,6,10,12,64,20,14,13,1,1,192,6,34,26,25,27,3,3,2,3,31,55,43,30,30,43, +55,31,3,2,3,3,27,25,26,34,6,254,72,22,2,2,22,72,9,9,14,128,14,9,9,9,9,14,128,14,9,9, +72,22,2,2,22,72,59,30,18,21,21,18,30,59,72,1,179,6,6,12,20,28,29,32,2,2,32,29,28,20,12,155, +137,18,37,128,14,13,5,1,13,14,20,1,48,0,0,0,0,3,0,0,255,192,2,0,1,192,0,18,0,126,0,156, +0,0,1,22,51,50,63,1,54,53,52,47,1,38,15,1,6,21,20,31,2,6,15,1,6,43,1,54,39,38,39,38, +39,38,7,6,31,1,22,55,54,55,22,23,22,23,20,7,6,7,39,6,7,6,31,1,22,23,51,22,23,22,23,6, +7,6,7,38,39,38,39,38,39,38,7,6,21,20,23,22,23,22,23,54,55,54,55,38,39,51,54,63,1,54,51,50, +23,22,29,1,6,7,6,35,38,39,38,39,38,7,6,29,1,6,23,22,23,22,23,54,55,54,55,53,38,39,38,39, +55,6,39,49,38,39,49,38,39,38,7,6,23,22,23,22,23,22,23,54,55,54,55,54,61,1,38,39,38,7,1,105, +3,4,4,3,22,3,3,22,7,7,22,3,3,22,51,41,30,24,10,15,47,17,9,8,25,24,33,56,40,11,12,27, +9,10,13,17,20,14,13,1,14,14,21,31,9,5,4,4,16,4,9,33,27,18,18,1,1,18,18,27,67,30,30,15, +2,1,4,5,6,15,15,36,35,59,54,36,36,1,1,17,22,41,30,24,10,15,16,10,11,1,10,10,11,30,20,21, +11,4,5,5,1,5,4,20,21,47,38,28,29,1,1,28,28,43,42,43,39,38,25,25,2,11,9,9,5,1,13,13, +26,27,39,58,22,21,1,1,1,8,8,9,1,131,3,3,22,3,4,4,3,22,6,6,22,3,4,4,3,22,130,1, +28,25,10,34,41,32,22,23,5,8,36,14,11,20,6,6,11,1,1,13,14,20,21,13,14,1,1,1,7,7,8,34, +7,1,1,18,18,27,27,18,18,1,2,27,27,31,2,3,5,1,2,7,29,35,34,26,26,1,1,37,36,54,35,29, +1,28,25,10,10,11,15,100,10,7,7,1,13,14,15,4,2,1,6,38,1,16,15,15,16,1,1,25,25,37,100,43, +28,29,1,124,31,1,1,13,13,3,6,7,8,12,2,18,17,17,17,1,2,14,15,7,3,3,36,10,4,4,5,0, +0,3,0,0,255,192,2,128,1,192,0,203,0,212,0,221,0,0,37,38,7,49,6,7,6,39,38,39,38,39,48,49, +38,39,54,55,54,55,22,23,54,55,54,55,54,23,54,55,38,39,6,7,6,7,6,39,38,39,38,39,38,39,55,54, +55,54,55,38,39,38,39,6,7,6,7,20,23,7,38,35,34,7,39,54,53,38,39,38,39,6,7,6,7,22,23,22, +31,1,6,7,6,7,6,7,6,39,38,39,38,39,6,7,22,23,54,23,22,23,22,23,22,23,54,55,22,23,22,23, +6,7,48,49,6,7,6,7,6,39,38,39,38,7,6,23,22,55,54,23,22,23,48,49,22,23,22,23,50,55,54,55, +54,55,54,55,22,23,6,7,6,7,6,7,22,23,54,55,54,55,54,55,22,51,50,55,22,23,22,23,22,23,54,55, +38,39,38,39,38,39,54,55,22,23,48,49,22,23,22,23,22,51,54,55,54,55,50,49,54,23,22,55,54,39,1,38, +39,54,55,22,23,6,7,37,22,23,6,7,38,39,54,55,2,113,25,19,18,14,22,9,6,3,4,3,4,14,1,1, +2,2,15,27,25,14,15,7,15,8,22,2,2,22,25,15,14,8,14,8,10,17,11,17,17,25,17,26,17,16,1,1, +18,18,27,27,18,18,1,11,18,26,31,31,25,19,11,1,18,18,27,27,18,18,1,1,16,17,26,17,25,17,17,12, +16,10,8,14,8,15,14,25,22,2,2,22,9,12,1,1,8,14,15,24,27,15,2,2,1,1,14,4,3,4,3,6, +9,22,14,18,19,25,19,6,9,21,6,7,7,12,10,13,13,16,11,12,24,9,9,4,3,3,24,37,7,16,16,21, +22,2,2,22,33,22,22,13,12,5,10,11,11,10,5,12,13,22,22,33,22,2,2,22,21,16,16,7,37,24,3,3, +4,9,9,24,12,11,16,12,13,10,1,22,10,21,9,6,19,254,79,15,1,1,15,15,1,1,15,1,0,15,1,1, +15,15,1,1,15,100,9,8,7,10,17,5,2,7,6,15,21,22,1,1,3,3,16,1,1,14,14,14,23,2,2,22, +22,2,1,14,14,14,23,2,2,25,17,20,20,18,34,3,17,18,26,27,18,18,1,1,18,18,27,20,15,37,8,8, +37,15,20,27,18,18,1,1,18,18,27,26,18,17,3,34,18,20,20,17,25,2,2,23,14,14,14,1,2,22,22,2, +2,23,1,2,13,13,13,1,1,16,3,2,2,2,21,21,15,6,7,2,5,17,10,7,8,9,9,22,19,5,3,3, +2,9,7,7,6,1,5,10,18,17,17,13,6,21,13,30,30,29,2,2,22,22,2,1,23,24,30,30,21,1,1,21, +30,30,24,23,1,2,22,22,2,2,29,30,30,13,21,6,13,17,18,17,10,5,1,6,6,8,17,6,5,19,21,10, +1,12,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,0,0,5,0,0,255,192,2,0,1,192,0,26, +0,31,0,36,0,46,0,55,0,0,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38, +39,38,39,38,39,3,38,39,55,21,55,23,6,7,53,39,54,55,49,54,55,21,7,38,39,5,39,53,22,23,22,23, +6,7,1,0,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,32,55,41,96, +64,96,41,55,224,2,44,45,69,136,23,1,1,104,136,70,44,45,1,1,23,1,192,1,34,34,58,57,72,72,57,58, +34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,67,10,36,76,122,122,76,35,11,122,67,73,51,52,13,174, +108,42,51,93,108,174,13,52,51,73,51,42,0,3,0,0,255,192,2,128,1,185,0,31,0,43,0,55,0,0,19,55, +54,31,1,22,29,1,23,22,23,21,35,53,38,39,38,39,6,7,6,7,21,35,53,54,63,1,53,54,55,49,7,55, +21,35,38,39,38,39,53,54,55,49,5,35,53,23,22,23,21,6,7,6,7,49,233,76,11,11,76,9,41,22,1,96, +1,18,18,28,26,19,18,1,96,1,23,40,1,9,208,103,80,20,14,13,1,1,24,2,55,80,103,24,1,1,13,14, +20,1,105,76,9,9,76,9,13,109,24,14,27,229,96,27,18,18,1,1,18,18,27,96,229,27,14,24,109,13,9,243, +56,238,1,13,14,20,92,27,15,182,238,56,15,27,92,20,14,13,1,0,0,4,0,0,255,224,1,192,1,160,0,21, +0,41,0,61,0,81,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33,5,34, +7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,23,20,23,49,22,51,50,55,54,61,1,52,39,38, +35,34,7,6,29,1,55,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1,52,39,38,35,1,128,27,18,18,1, +1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,255,0,14,9,9,9,9,14,14,9,9,9,9,14,64,9, +9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9,9,14,1,160,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,27,18,18,1,192,9,9,14,96,14,9,9,9,9,14,96,14,9,9,128,14,9, +9,9,9,14,192,14,9,9,9,9,14,192,64,9,9,14,32,14,9,9,9,9,14,32,14,9,9,0,0,4,0,0, +255,224,1,192,1,160,0,21,0,41,0,61,0,81,0,0,37,6,7,49,6,7,33,38,39,38,39,17,54,55,54,55, +33,22,23,22,23,17,3,52,39,49,38,43,1,34,7,6,21,20,23,22,59,1,50,55,54,53,7,34,7,49,6,21, +20,23,22,59,1,50,55,54,53,52,39,38,43,1,23,52,39,49,38,43,1,34,7,6,21,20,23,22,59,1,50,55, +54,53,1,192,1,18,18,27,254,192,27,18,18,1,1,18,18,27,1,64,27,18,18,1,192,9,9,14,96,14,9,9, +9,9,14,96,14,9,9,128,14,9,9,9,9,14,192,14,9,9,9,9,14,192,64,9,9,14,32,14,9,9,9,9, +14,32,14,9,9,32,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,1,0,14,9,9,9, +9,14,14,9,9,9,9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,128,14,9,9,9,9,14,14,9,9,9, +9,14,0,0,0,2,0,0,255,192,1,128,1,192,0,17,0,61,0,0,19,54,55,49,54,53,38,39,38,39,6,7, +6,7,22,23,22,23,7,22,23,49,22,63,1,54,55,54,39,38,39,38,15,1,39,38,7,6,15,1,6,23,22,31, +1,35,34,7,6,21,20,23,22,59,1,54,55,54,47,1,55,23,255,27,18,18,1,17,18,27,27,18,18,1,1,18, +18,27,30,11,16,16,13,88,13,2,1,10,11,16,16,13,58,39,25,39,38,18,49,18,10,9,33,45,92,17,11,12, +12,11,17,208,27,9,10,18,110,35,24,1,64,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,170,12,2, +1,10,72,11,16,16,13,13,2,1,10,47,46,29,3,5,32,92,34,34,35,21,35,12,11,17,17,11,12,2,23,22, +21,110,65,29,0,2,0,0,255,192,2,128,1,191,0,48,0,96,0,0,1,34,7,49,6,29,1,6,7,38,39,53, +52,63,1,54,39,38,39,38,7,34,49,48,49,7,6,29,1,7,6,7,21,20,23,22,23,50,63,1,54,55,54,55, +53,52,39,38,35,5,39,53,52,47,1,34,49,48,49,38,7,6,7,6,31,1,22,29,1,6,7,38,39,53,52,39, +38,35,6,7,6,29,1,22,23,22,31,1,22,51,54,55,54,61,1,38,39,1,16,14,9,9,1,15,15,1,14,78, +6,3,3,11,26,17,1,117,16,90,21,1,7,8,17,4,4,179,38,23,23,1,9,9,14,1,90,90,16,117,1,18, +25,11,3,3,6,78,14,1,15,15,1,9,9,14,14,9,9,1,23,23,38,179,4,4,17,8,7,1,21,1,0,9, +9,14,80,15,1,1,15,77,26,23,130,11,13,12,7,13,22,176,24,29,81,29,9,22,96,9,11,10,1,1,47,11, +30,30,40,128,14,9,9,162,30,81,29,24,176,21,12,7,12,13,12,129,23,27,76,15,1,1,15,81,13,9,10,1, +8,9,13,127,40,31,30,12,49,1,1,11,11,8,96,23,8,0,0,0,0,4,0,0,255,192,1,191,1,192,0,25, +0,52,0,85,0,97,0,0,1,33,6,7,6,7,17,22,23,21,6,7,20,23,22,51,33,54,55,54,55,17,52,39, +38,39,7,22,15,1,23,20,7,34,53,39,7,20,35,38,53,55,39,38,63,2,54,51,50,31,2,39,50,23,22,7, +6,39,38,35,6,7,6,7,22,23,22,23,50,55,54,23,22,7,6,35,38,39,38,39,54,55,54,55,19,33,53,33, +50,23,22,21,20,7,6,35,1,96,254,208,20,14,13,1,1,15,15,1,9,9,13,1,64,41,27,27,1,27,27,41, +27,5,3,21,5,4,1,26,26,1,4,5,21,3,5,29,13,1,2,2,1,13,29,109,36,30,5,2,3,6,11,9, +37,25,25,1,1,25,25,37,9,11,6,3,2,5,30,36,51,34,34,1,1,34,34,51,136,254,224,1,32,14,9,9, +9,9,14,1,192,1,13,14,20,254,224,22,14,81,9,17,14,10,9,1,27,27,41,1,64,41,27,27,1,170,2,5, +20,28,4,1,1,13,13,1,1,4,28,20,5,2,4,26,2,2,26,4,98,20,4,6,6,1,3,1,25,25,37,37, +25,25,1,3,1,6,6,4,20,1,34,34,51,51,34,34,1,254,136,64,9,9,14,14,9,9,0,0,0,2,0,0, +255,192,2,0,1,191,0,28,0,91,0,0,37,39,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,22,55, +23,22,51,50,55,54,53,52,47,1,6,7,21,6,7,38,39,53,38,47,1,38,55,54,31,1,22,23,22,55,54,55, +54,39,38,47,1,34,39,38,39,38,55,54,55,53,54,55,22,23,21,22,23,22,7,6,39,38,39,38,7,6,7,6, +23,22,31,1,22,23,22,7,1,244,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16, +16,12,12,12,226,8,38,2,18,18,2,15,13,5,17,5,7,18,5,14,12,13,10,10,2,2,5,5,24,6,1,2, +17,18,19,3,8,38,2,18,18,2,9,12,17,4,8,18,12,7,13,10,10,2,2,4,4,19,6,22,21,21,3,4, +120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,12,16,16,12,190,34,8,8,18,2, +2,18,9,3,5,2,8,17,17,4,2,5,3,2,2,3,7,5,4,4,7,2,1,4,13,14,31,34,8,8,18,2, +1,19,9,1,5,7,18,17,4,5,1,2,2,3,7,4,4,4,6,2,4,14,13,34,0,3,0,0,255,192,2,0, +1,191,0,17,0,47,0,73,0,0,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,1,6,35,49, +34,47,1,6,39,38,39,38,39,38,55,54,55,54,23,22,23,22,23,22,7,23,22,21,20,7,3,38,39,49,38,39, +6,7,6,7,22,23,22,23,22,23,22,51,50,55,54,55,54,55,54,55,236,8,8,12,12,8,8,8,8,12,12,8, +8,1,8,12,16,16,12,120,62,83,70,48,49,10,8,30,31,55,56,69,70,49,49,11,9,42,119,12,12,206,1,24, +25,37,36,24,24,1,1,14,15,18,18,12,3,4,5,3,12,19,18,15,14,1,1,16,12,8,8,8,8,12,12,8, +8,8,8,12,254,188,12,12,119,42,9,11,49,49,70,69,56,55,31,30,8,10,49,48,70,83,62,120,12,16,16,12, +1,62,36,25,24,1,1,24,25,36,20,26,27,24,24,13,4,4,13,24,24,27,26,20,0,4,0,32,255,192,2,32, +1,192,0,12,0,33,0,49,0,62,0,0,1,52,55,38,43,1,34,7,6,7,21,51,53,3,55,53,35,21,7,6, +7,6,23,22,23,22,51,50,63,1,38,55,54,63,1,7,6,7,6,23,22,51,50,63,1,54,55,53,35,7,19,35, +34,7,6,29,1,51,53,52,39,38,35,1,63,8,2,6,127,14,9,9,1,160,72,73,160,87,30,8,9,18,14,23, +22,25,31,27,21,22,11,11,40,104,86,30,9,8,18,32,52,31,27,115,50,1,192,1,161,128,14,9,9,192,9,9, +14,1,160,17,13,2,9,9,14,32,32,254,234,55,159,175,65,23,35,36,33,23,13,12,19,17,42,45,46,32,39,65, +23,35,36,33,49,19,87,38,65,207,175,1,15,9,9,14,32,32,14,9,9,0,0,0,0,2,0,0,255,193,2,64, +1,191,0,35,0,77,0,0,1,52,39,49,38,43,1,6,7,3,39,38,39,35,34,7,6,21,20,23,22,59,1,23, +22,23,50,51,54,55,19,51,50,55,54,53,7,38,35,49,34,15,1,39,38,35,34,7,6,21,20,31,1,7,6,21, +20,23,22,51,50,63,1,23,22,51,50,55,54,53,52,47,1,55,54,53,52,39,2,64,9,9,14,224,24,7,91,73, +10,19,64,14,9,9,9,9,14,44,103,10,19,2,2,21,6,106,199,14,9,9,9,10,13,13,10,41,41,10,13,13, +10,9,9,42,42,9,9,10,13,13,10,41,41,10,13,13,10,9,9,42,42,9,9,1,160,14,8,9,1,23,254,149, +146,17,1,9,9,13,13,9,10,206,17,1,3,21,1,168,8,9,14,201,9,9,42,42,9,9,10,13,13,10,41,41, +10,13,13,10,9,9,42,42,9,9,10,13,13,10,41,41,10,13,13,10,0,2,0,0,255,192,1,255,1,192,0,41, +0,72,0,0,5,34,7,49,34,35,38,39,38,39,54,55,54,55,50,51,22,51,54,55,54,39,38,35,6,7,6,7, +6,7,22,23,22,23,22,23,50,55,54,55,38,39,55,47,1,38,35,34,15,2,6,7,6,31,1,7,6,23,50,63, +1,23,22,51,54,53,39,55,54,39,38,39,1,85,2,2,3,3,89,60,59,3,3,59,60,89,3,3,2,2,11,3, +2,11,44,46,71,58,58,34,34,1,1,34,34,58,58,71,46,43,10,1,1,14,163,77,34,3,6,6,3,34,77,6, +2,1,4,55,13,1,11,2,3,68,68,3,2,10,13,55,4,2,1,6,18,1,2,60,60,89,89,60,60,2,1,1, +11,12,6,16,1,34,34,58,58,71,71,58,58,34,34,1,16,4,11,13,2,252,11,69,6,6,69,11,1,6,5,5, +54,76,11,1,2,36,36,2,1,11,76,54,5,6,5,1,0,8,0,16,255,192,1,240,1,192,0,36,0,40,0,44, +0,48,0,52,0,59,0,63,0,67,0,0,37,39,55,54,39,38,39,35,39,38,35,34,15,1,35,6,7,6,31,1, +7,6,23,22,23,51,23,22,51,50,63,1,51,54,55,54,39,3,23,35,55,3,55,23,35,55,39,51,7,23,39,51, +7,55,35,39,55,51,23,7,51,55,23,35,55,39,51,7,1,235,55,55,10,10,11,22,111,58,12,21,21,12,58,111, +23,10,10,10,55,55,10,10,10,23,111,58,12,21,21,12,58,111,23,10,10,10,235,24,47,23,167,21,21,42,21,21, +42,21,146,24,47,23,58,116,54,54,116,54,54,67,21,20,41,20,20,41,21,103,89,89,20,17,17,1,93,19,18,94, +1,17,17,20,89,89,20,16,17,1,93,20,18,93,2,17,17,20,1,15,38,38,254,243,33,33,142,33,33,237,38,38, +95,87,87,87,87,33,33,142,33,33,0,0,0,4,0,0,255,192,2,128,1,192,0,22,0,47,0,63,0,79,0,0, +1,54,31,1,22,23,17,35,53,38,39,38,39,6,7,6,7,21,35,17,54,63,1,23,38,15,1,35,6,31,1,7, +6,23,51,23,22,63,1,51,54,47,1,55,54,39,35,39,23,55,54,51,50,31,1,22,29,1,6,7,6,7,35,17, +33,17,35,38,39,38,39,53,52,63,1,54,51,50,31,1,1,54,10,10,121,28,1,96,1,18,18,27,27,18,18,1, +96,1,28,121,16,6,7,16,32,11,4,16,16,4,11,32,16,7,6,17,32,11,4,16,16,4,11,32,17,186,28,5, +7,7,5,64,12,1,18,18,27,64,254,128,64,27,18,18,1,12,64,5,7,7,5,28,1,188,8,8,101,24,36,254, +165,128,27,18,18,1,1,18,18,27,128,1,91,36,24,101,120,8,8,28,2,10,27,29,10,2,28,8,8,28,2,10, +29,27,10,2,28,121,32,5,5,71,13,19,132,27,18,18,1,1,11,254,245,1,18,18,27,132,19,13,71,5,5,32, +0,11,0,0,255,192,2,128,1,192,0,3,0,7,0,27,0,31,0,35,0,42,0,62,0,67,0,104,0,108,0,112, +0,0,37,55,35,23,63,1,39,7,1,34,7,49,6,7,17,22,23,22,51,50,55,54,55,17,38,39,38,35,5,35, +23,55,7,55,39,7,59,1,55,39,35,7,23,1,34,7,49,6,7,17,22,23,22,51,50,55,54,55,17,38,39,38, +35,1,33,17,33,17,19,54,55,51,55,54,51,50,31,1,51,22,23,22,15,1,23,22,7,6,43,1,7,6,35,34, +47,1,35,34,39,38,63,1,39,38,63,1,7,51,39,7,35,23,55,1,64,18,36,18,63,36,18,18,254,177,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,1,115,37,19,18,198,37,19,18,66,66,33,33,66,33,33,1,49, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,254,48,1,128,254,128,67,6,12,60,29,6,11,12,5,29, +60,12,6,6,6,29,29,6,6,6,12,60,29,6,12,11,7,29,60,12,6,5,7,29,29,6,6,124,17,36,19,61, +37,18,19,81,30,30,55,1,30,31,1,56,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,201,30,30,111, +1,30,31,56,55,55,56,1,56,9,9,14,254,64,14,9,9,9,9,14,1,192,14,9,9,254,32,1,192,254,64,1, +38,10,1,49,10,10,49,1,10,11,10,49,48,11,10,11,49,10,10,49,11,10,10,49,49,11,10,40,29,29,55,30, +30,0,0,0,0,2,0,0,255,192,2,0,1,192,0,30,0,72,0,0,19,53,23,22,51,33,50,63,1,21,6,7, +6,7,35,21,35,53,35,21,35,53,35,21,35,53,35,38,39,38,39,23,34,39,49,38,53,52,55,54,51,33,50,23, +22,21,20,7,6,43,1,21,20,7,6,35,34,39,38,61,1,33,21,20,7,6,35,34,39,38,61,1,35,0,71,25, +25,1,13,26,25,71,1,13,14,20,16,64,96,64,96,64,16,20,14,13,1,32,14,9,9,9,9,14,1,192,14,9, +9,9,9,14,32,9,9,14,14,9,9,255,0,9,9,14,14,9,9,32,1,112,80,24,8,8,24,80,20,14,13,1, +64,64,64,64,64,64,1,13,14,20,208,9,9,14,14,9,9,9,9,14,14,9,9,192,14,9,9,9,9,14,192,192, +14,9,9,9,9,14,192,0,0,3,0,0,255,192,2,128,1,192,0,145,0,150,0,155,0,0,1,55,54,55,54,51, +50,23,22,31,1,22,31,1,50,23,22,23,22,23,22,7,6,7,6,7,6,7,6,43,1,21,23,22,31,1,22,23, +22,23,48,51,22,23,20,21,6,7,6,7,6,7,34,43,1,21,22,23,22,23,6,7,35,21,20,7,6,35,34,39, +38,61,1,35,21,20,7,6,35,34,39,38,61,1,35,21,20,7,6,35,34,39,38,61,1,35,38,39,54,55,54,55, +53,35,34,35,38,39,38,39,38,39,52,53,54,55,54,55,54,63,1,54,63,1,53,35,34,39,38,39,38,39,38,39, +38,55,54,55,54,51,54,51,55,54,55,49,7,21,51,53,35,7,33,53,33,21,1,24,26,2,2,5,4,6,5,2, +2,25,51,61,23,3,2,3,3,1,1,6,1,1,2,1,3,1,1,8,7,8,12,32,38,29,2,3,4,3,1,3, +1,1,3,2,4,5,5,2,3,39,32,45,18,1,2,22,40,9,9,14,14,9,9,160,9,9,14,14,9,9,160,9, +9,14,14,9,9,40,22,2,1,18,45,32,39,3,2,6,4,4,3,2,1,1,4,3,4,3,2,29,38,32,12,7, +9,7,1,1,3,1,2,1,1,6,3,4,1,1,2,2,23,61,50,57,193,193,64,1,65,254,191,1,170,17,2,1, +2,2,1,2,17,36,16,7,2,2,2,1,1,8,10,4,4,3,3,1,1,5,56,9,26,12,10,1,1,3,3,5, +6,4,4,4,4,4,4,3,1,66,35,12,5,18,22,2,32,14,9,9,9,9,14,32,32,14,9,9,9,9,14,32, +32,14,9,9,9,9,14,32,2,22,18,5,12,35,66,1,3,4,4,4,4,4,4,6,5,3,3,1,1,10,12,26, +9,56,5,1,1,3,3,4,4,10,8,4,2,1,1,7,16,36,106,64,64,224,64,64,0,2,0,0,255,227,2,56, +1,160,0,24,0,49,0,0,1,38,15,1,35,6,7,6,7,21,22,23,22,59,1,23,22,51,50,55,54,55,17,38, +39,23,55,54,39,38,15,1,39,38,7,6,31,1,7,6,23,22,63,1,23,22,55,54,47,1,1,45,19,15,135,84, +20,14,13,1,1,13,14,20,84,135,9,12,7,6,18,1,1,18,213,47,14,14,17,17,47,48,17,17,14,14,47,47, +14,14,17,17,48,47,17,17,14,14,47,1,157,8,13,120,1,13,13,20,95,21,13,13,120,8,3,9,20,1,125,20, +9,220,47,17,17,14,14,48,47,14,14,17,17,47,47,17,17,14,14,47,47,14,14,17,17,48,0,0,0,4,0,0, +255,192,2,0,1,192,0,17,0,44,0,62,0,88,0,0,1,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39, +38,35,53,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,6,7,49,6,7,22,23,22,23,38,39,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,1,0,14,9,9,9,9,14,14,9,9,9,9,14,72,57,58,34,34,1,1,34,34, +58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,14,9,9,9,9,14,14,9,9,9,9,14,41,27,27,1,1, +27,27,41,82,54,54,2,2,54,54,82,41,27,27,1,1,27,27,41,1,64,9,9,14,14,9,9,9,9,14,14,9, +9,128,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,254,128,9,9,14,14, +9,9,9,9,14,14,9,9,128,1,27,27,41,41,27,27,1,2,54,54,82,82,54,54,2,1,27,27,41,41,27,27, +1,0,0,0,0,4,0,0,255,192,2,64,1,192,0,26,0,47,0,65,0,91,0,0,55,39,38,15,1,38,55,23, +50,63,1,54,47,1,38,7,6,21,20,23,22,23,22,63,1,54,39,5,35,6,7,6,7,21,20,23,22,51,5,50, +55,54,61,1,52,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,19,51,55,33,17,33, +55,35,38,39,54,55,51,55,35,38,39,54,55,51,55,35,38,39,54,51,159,27,4,12,45,26,26,45,12,4,26,5, +11,39,25,19,69,71,8,12,12,10,39,10,3,1,64,255,27,18,17,1,9,9,13,1,63,14,9,9,18,18,28,127, +14,8,9,9,9,13,13,9,9,9,8,14,47,159,18,254,127,1,32,18,98,15,1,1,15,106,18,124,15,1,1,15, +132,18,150,15,1,2,14,114,62,12,2,4,73,75,5,11,63,12,8,24,12,19,81,100,101,81,8,1,1,6,24,7, +14,50,1,18,18,26,32,14,8,9,2,9,9,13,31,29,18,18,1,96,9,9,13,14,8,9,9,9,13,13,9,9, +1,160,64,254,161,64,2,13,14,1,63,2,13,14,1,63,2,14,21,0,0,6,0,0,255,192,1,192,1,192,0,8, +0,34,0,55,0,84,0,96,0,105,0,0,1,54,55,38,39,6,7,22,31,1,17,38,39,38,39,33,6,7,6,7, +17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,3,22,23,49,22,23,6,7,21,6,7,35,38,39,53,38,39, +54,55,54,55,7,38,55,54,31,1,55,54,23,22,15,1,23,22,7,6,35,34,47,1,7,6,35,38,39,38,63,1, +39,5,33,34,39,38,53,52,55,54,51,33,21,3,54,55,38,39,6,7,22,23,1,16,15,1,1,15,15,1,1,15, +176,1,13,14,20,254,208,41,27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,208,34,23,22,1,2,30,1, +15,64,15,1,30,2,1,22,23,34,118,13,4,7,14,106,106,14,7,4,13,77,77,13,4,5,10,3,3,106,106,3, +3,10,5,4,13,77,77,1,6,254,224,14,9,9,9,9,14,1,32,176,15,1,1,15,15,1,1,15,1,48,1,15, +15,1,1,15,15,1,192,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,1, +16,1,18,18,27,32,19,13,15,1,1,15,13,19,32,27,18,18,1,175,7,14,13,4,46,46,4,13,14,7,33,33, +7,14,10,1,46,46,1,1,9,15,6,33,33,209,9,9,14,14,9,9,64,1,48,1,15,15,1,1,15,15,1,0, +0,2,0,0,255,192,2,64,1,192,0,37,0,41,0,0,1,19,22,29,1,6,7,6,7,33,38,39,38,39,53,52, +55,19,39,38,55,54,55,54,23,22,31,1,55,54,55,54,23,22,23,22,15,1,19,39,7,51,1,72,236,12,1,13, +14,20,254,32,20,14,13,1,12,235,48,9,2,2,10,11,12,13,8,40,39,9,12,13,10,11,2,1,9,48,80,120, +119,239,1,80,254,219,16,19,24,20,14,13,1,1,13,14,20,24,19,16,1,37,60,11,13,12,9,8,1,2,10,49, +49,10,2,1,8,9,12,13,11,60,254,176,156,156,0,0,0,4,0,32,255,192,2,32,1,160,0,53,0,67,0,76, +0,85,0,0,1,38,7,49,6,7,49,6,7,53,38,39,38,39,34,7,6,21,20,23,22,51,50,23,22,21,17,22, +23,22,23,51,54,55,53,52,39,38,43,1,55,21,22,23,51,54,55,53,6,35,38,39,38,39,55,35,39,21,22,23, +22,23,54,55,54,55,53,15,1,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,1,67,11,28,28,34, +33,29,1,27,27,41,14,9,9,9,9,14,14,9,9,1,18,18,27,176,15,1,9,9,14,32,128,1,15,32,15,1, +15,17,47,34,35,9,157,64,64,1,27,27,41,41,27,27,1,64,72,15,1,1,15,15,1,1,15,80,15,1,1,15, +15,1,1,15,1,0,1,5,4,18,19,41,86,41,27,27,1,9,9,14,14,9,9,9,9,14,255,0,27,18,18,1, +2,13,17,14,9,9,96,144,15,1,1,15,206,4,1,28,28,45,96,64,134,41,27,27,1,1,27,27,41,134,64,80, +1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,0,2,0,0,255,192,1,192,1,192,0,30,0,57,0,0, +37,39,38,39,33,6,15,1,6,23,22,51,21,22,23,51,54,55,53,33,21,22,23,51,54,63,1,50,55,54,39,37, +54,55,21,51,53,51,21,51,53,22,23,21,51,53,38,39,38,39,35,6,7,6,7,21,51,39,1,189,15,9,20,254, +158,20,9,15,7,9,10,16,1,15,32,15,1,1,0,1,15,31,15,1,2,17,10,9,7,254,178,2,38,48,48,48, +39,1,48,1,36,37,54,64,54,36,36,1,48,1,109,32,18,1,1,18,32,15,15,15,112,15,1,1,15,112,112,15, +1,1,15,112,15,15,15,211,45,24,197,208,208,197,23,46,128,128,54,37,36,1,1,36,37,54,128,128,0,2,255,255, +255,192,2,63,1,192,0,37,0,79,0,0,37,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,21,22, +21,6,7,6,7,22,23,22,23,51,54,55,54,55,52,39,38,39,55,6,39,49,38,39,52,55,54,55,54,39,38,39, +38,35,6,7,6,7,20,23,22,23,54,51,22,23,22,23,20,21,22,23,54,55,54,55,54,39,38,35,1,87,9,1, +18,18,26,27,17,14,22,22,28,41,27,27,1,1,29,18,17,1,2,27,27,41,239,34,22,22,1,20,20,31,222,72, +52,52,2,20,20,36,5,1,1,6,17,19,81,55,54,2,2,9,8,18,18,41,26,27,1,36,17,41,35,36,25,5, +3,2,7,95,15,18,27,18,18,1,1,17,23,14,14,1,27,27,41,2,1,2,1,10,24,24,32,41,27,28,1,1, +22,23,34,32,22,22,3,55,12,44,43,72,41,35,34,21,4,5,6,2,3,2,54,54,82,13,12,6,8,7,1,27, +27,41,5,6,17,35,3,18,18,31,5,5,5,0,0,0,0,3,0,0,255,192,2,127,1,191,0,43,0,61,0,102, +0,0,55,54,55,49,54,55,22,23,22,23,54,51,50,23,55,54,47,2,38,15,1,39,38,15,2,6,31,1,7,6, +31,2,22,63,1,54,55,38,39,38,39,51,22,23,49,22,23,50,55,54,55,38,39,38,39,6,7,6,7,5,52,55, +49,52,53,38,39,38,39,34,7,38,39,38,35,6,7,6,7,20,21,22,21,6,7,6,7,20,23,22,23,33,54,55, +54,55,52,39,38,39,96,1,32,31,47,40,30,29,10,28,31,7,7,24,6,14,88,16,5,14,74,74,14,5,16,89, +14,6,52,52,6,14,89,16,5,14,11,5,41,41,27,26,1,32,1,22,23,34,15,13,11,40,4,22,21,32,34,23, +22,1,1,191,1,1,18,18,26,19,15,14,27,27,34,48,31,32,1,1,38,25,25,1,26,27,41,1,16,41,27,27, +1,18,17,29,240,48,31,31,1,1,23,24,37,14,1,35,14,5,16,89,14,6,52,52,6,14,89,16,5,14,74,74, +14,5,16,89,14,6,8,54,34,7,30,30,43,34,23,22,1,5,52,32,30,20,20,1,1,22,23,34,118,2,1,2, +1,27,18,18,1,10,30,17,18,1,32,31,47,2,3,2,2,3,27,26,39,41,27,27,1,1,27,27,41,32,24,24, +10,0,0,0,0,3,0,0,0,0,2,127,1,128,0,80,0,96,0,105,0,0,37,39,53,52,39,38,7,6,7,39, +38,39,33,6,7,6,7,21,6,7,21,51,54,55,54,55,53,54,55,6,21,17,22,23,51,54,55,53,22,23,21,22, +23,54,55,53,50,51,22,51,50,55,21,22,23,54,55,53,54,55,21,22,23,51,54,55,53,23,21,20,31,1,22,23, +50,55,54,63,1,54,39,37,7,6,7,38,47,1,38,55,54,55,51,22,23,22,7,23,38,39,54,55,22,23,6,7, +2,122,10,8,7,8,16,10,66,30,48,254,193,37,25,25,1,23,1,8,27,18,18,1,2,23,1,1,15,63,15,1, +14,18,2,14,14,1,2,2,5,5,6,12,2,14,15,1,20,14,2,13,64,15,1,31,11,41,17,24,18,12,13,4, +21,3,8,254,255,23,34,48,48,34,23,11,7,7,19,166,19,7,8,12,199,15,1,1,15,15,1,1,15,171,14,77, +9,5,4,4,8,15,91,39,1,1,25,25,37,86,19,31,32,1,18,18,27,104,27,10,6,7,254,208,15,1,1,15, +112,14,8,26,15,1,1,15,17,1,1,17,15,1,1,15,26,8,14,112,15,1,1,15,176,32,42,19,16,62,20,1, +11,10,17,109,13,11,110,23,33,1,1,33,23,12,13,13,1,1,13,13,12,185,1,15,15,1,1,15,15,1,0,0, +0,10,0,16,255,192,1,240,1,192,0,11,0,19,0,33,0,47,0,55,0,59,0,75,0,83,0,97,0,111,0,0, +55,34,61,1,52,55,50,31,1,7,6,39,23,39,38,53,52,63,1,23,7,52,55,48,51,23,21,20,7,34,47,1, +38,39,19,38,53,52,63,1,54,51,50,23,20,15,1,39,23,55,54,51,50,31,1,35,23,7,39,51,23,22,21,20, +15,1,6,35,34,39,53,55,20,53,48,49,55,22,21,20,15,1,55,23,3,38,53,54,51,50,31,1,22,21,20,15, +1,39,23,50,29,1,20,35,34,47,1,55,54,49,52,21,20,4,4,1,1,77,76,1,2,211,208,7,1,106,108,200, +4,1,203,7,2,1,195,2,1,3,2,2,151,1,3,7,1,2,79,82,113,95,6,7,8,6,95,217,209,100,100,200, +120,4,2,195,1,2,7,1,204,19,1,7,208,108,106,178,2,1,7,2,2,151,2,2,81,80,174,4,4,2,1,76, +77,2,131,4,162,4,1,1,45,122,4,1,88,22,1,7,2,2,156,190,15,3,1,22,66,7,1,1,87,2,2,1, +47,1,2,2,2,98,1,8,2,2,143,49,58,168,7,8,168,31,176,176,208,1,3,2,2,87,1,8,66,22,1,1, +44,2,2,7,1,22,190,156,1,92,2,2,8,1,98,2,2,2,1,49,143,124,4,162,4,2,122,45,1,1,1,0, +0,3,0,0,255,192,1,192,1,192,0,14,0,31,0,46,0,0,19,54,31,1,21,6,7,34,47,1,38,39,53,54, +23,37,20,15,1,39,38,53,52,63,1,54,51,50,31,1,22,21,23,54,23,21,6,15,1,6,35,38,39,53,55,54, +23,8,2,2,196,2,14,4,4,152,31,1,1,7,1,162,4,198,198,4,4,165,16,17,17,15,165,5,14,7,1,1, +31,152,4,4,14,2,196,2,2,1,38,1,2,117,223,16,1,2,93,20,37,198,9,1,37,5,2,119,119,3,4,4, +3,101,9,9,101,3,4,37,1,9,198,37,20,93,2,1,16,223,117,2,1,0,0,0,0,3,0,0,255,192,2,64, +1,192,0,21,0,30,0,73,0,0,1,54,55,50,31,1,51,50,31,1,51,22,23,21,6,7,6,7,35,7,39,55, +23,6,7,22,23,54,55,38,39,7,21,20,7,6,43,1,34,39,38,61,1,6,35,34,39,21,20,7,6,43,1,34, +39,38,61,1,38,47,1,38,55,54,55,54,23,22,31,1,22,23,51,23,1,77,4,19,12,7,17,52,20,14,18,56, +22,2,1,22,23,34,69,5,112,23,115,15,1,1,15,15,1,1,15,32,9,9,14,32,14,9,9,37,43,44,36,9, +9,14,32,14,9,9,45,14,4,3,7,6,13,14,10,11,4,4,7,24,206,112,1,172,19,1,10,22,14,18,2,22, +24,34,23,22,1,31,64,139,44,1,15,15,1,1,15,15,1,192,224,14,9,9,9,9,14,115,19,19,115,14,9,9, +9,9,14,230,18,49,15,13,12,11,4,2,6,7,13,16,22,1,65,0,0,3,255,255,255,192,2,127,1,192,0,20, +0,72,0,80,0,0,63,1,7,6,23,22,23,51,38,61,1,39,38,7,6,15,1,6,23,22,51,5,39,38,39,53, +51,23,22,59,1,54,63,1,54,47,1,38,43,1,34,7,6,31,1,7,6,31,1,21,20,23,22,23,6,7,6,7, +6,7,6,7,22,23,33,54,55,54,55,54,39,38,47,1,23,6,7,38,39,38,55,18,174,91,7,3,4,11,223,15, +120,18,21,21,17,117,9,4,5,12,2,45,100,26,1,64,28,10,13,30,18,10,15,8,11,75,9,15,238,5,2,2, +3,61,59,8,8,59,26,25,45,142,108,107,68,5,4,13,1,3,16,1,243,49,35,35,3,2,17,17,32,86,46,6, +18,11,7,7,3,192,32,69,8,9,9,1,40,43,43,87,12,1,1,14,117,8,10,10,34,50,14,29,37,23,9,1, +17,28,18,16,99,13,5,4,5,50,25,7,7,25,109,54,47,47,31,6,18,19,16,1,1,4,13,16,2,1,31,30, +49,36,29,30,16,224,12,17,1,1,8,8,13,0,0,0,0,1,0,0,255,192,2,0,1,193,0,60,0,0,1,20, +21,38,35,6,7,6,7,6,21,20,23,6,43,1,7,6,21,20,23,22,23,6,7,6,7,34,39,38,53,52,55,6, +35,38,39,38,53,54,55,54,55,22,23,22,51,50,63,1,53,54,55,54,55,54,51,50,23,22,21,2,0,26,28,41, +23,23,10,9,30,29,32,87,40,9,3,3,1,1,17,17,25,25,18,17,2,7,8,31,14,14,1,17,17,25,15,7, +6,9,13,9,41,1,17,18,27,52,68,68,52,49,1,23,2,3,14,1,20,19,24,25,17,42,34,10,40,10,13,9, +6,6,16,26,16,17,1,18,18,23,8,7,2,2,19,20,19,25,17,17,1,1,3,3,9,40,87,47,34,35,26,50, +50,53,67,0,0,12,0,0,255,192,2,0,1,192,0,19,0,42,0,63,0,81,0,98,0,111,0,124,0,137,0,150, +0,161,0,172,0,183,0,0,1,38,63,1,54,55,54,23,22,23,22,7,6,15,1,6,39,38,39,49,39,6,35,38, +35,34,7,34,47,1,38,55,54,55,54,51,50,23,22,23,22,15,1,39,54,23,49,22,31,1,22,7,6,7,6,47, +1,38,39,38,55,54,55,49,5,38,63,1,54,23,22,23,22,23,6,7,35,38,39,38,39,49,37,22,7,6,7,6, +7,35,38,39,54,55,54,55,54,31,1,7,22,23,21,6,7,35,38,39,53,54,55,51,33,22,23,21,6,7,35,38, +39,53,54,55,51,5,22,23,21,6,7,35,38,39,53,54,55,51,33,22,23,21,6,7,35,38,39,53,54,55,51,7, +6,7,38,39,17,54,55,22,23,17,35,6,7,38,39,53,54,55,22,23,21,51,6,7,38,39,53,54,55,22,23,21, +1,81,15,5,31,4,9,9,10,32,25,6,1,2,8,68,18,15,2,2,39,9,20,7,6,6,7,20,9,31,3,4, +4,10,29,29,29,28,10,5,4,4,30,176,10,9,9,4,31,6,16,2,1,16,18,67,9,2,1,6,25,32,1,2, +5,15,68,9,10,10,4,16,4,1,22,80,21,5,1,1,254,255,14,4,2,1,5,21,80,22,1,4,16,4,10,10, +9,69,19,22,2,2,22,80,22,2,2,22,80,1,128,22,2,2,22,80,22,2,2,22,80,254,128,22,2,2,22,80, +22,2,2,22,80,1,128,22,2,2,22,80,22,2,2,22,80,216,1,15,15,1,1,15,15,1,64,1,15,15,1,1, +15,15,1,128,1,15,15,1,1,15,15,1,1,35,14,18,76,10,3,4,6,19,28,8,10,9,7,45,9,13,2,1, +44,16,1,1,16,76,10,9,9,3,6,6,3,9,9,10,76,75,6,4,3,10,76,18,14,1,2,13,9,45,7,9, +10,8,28,19,184,19,11,46,6,3,2,10,36,41,21,2,2,21,5,5,30,11,19,5,5,22,2,2,22,41,36,10, +2,3,6,46,96,2,22,48,22,2,2,22,48,22,2,2,22,48,22,2,2,22,48,22,2,128,2,22,48,22,2,2, +22,48,22,2,2,22,48,22,2,2,22,48,22,2,48,15,1,1,15,1,16,15,1,1,15,254,240,15,1,1,15,240, +15,1,1,15,240,15,1,1,15,240,15,1,1,15,240,0,0,5,0,0,255,192,1,128,1,192,0,22,0,66,0,101, +0,128,0,132,0,0,19,21,20,23,22,59,1,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,51,7,34,7, +49,6,29,1,20,23,22,59,1,50,55,54,61,1,38,39,6,7,21,6,7,35,38,39,53,54,55,51,22,23,21,22, +23,54,55,53,52,39,38,43,1,31,1,22,21,6,7,35,6,7,22,23,51,50,55,54,53,38,47,1,38,53,54,55, +51,54,55,38,39,35,6,7,6,21,22,23,55,38,39,6,7,21,20,31,1,22,51,50,63,1,54,61,1,38,39,6, +7,21,20,7,38,61,1,39,23,35,53,224,9,9,14,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,160,144, +17,11,12,12,11,17,16,17,11,12,1,15,15,1,1,7,16,7,1,1,7,16,7,1,1,15,15,1,12,11,17,16, +95,26,7,1,13,26,15,1,1,15,26,19,13,14,1,22,26,7,1,13,18,15,1,1,15,18,19,13,14,1,22,105, +1,15,15,1,30,5,5,8,8,5,5,30,1,15,15,1,16,16,24,128,128,1,192,128,14,9,9,254,224,27,18,18, +1,1,18,18,27,1,128,27,18,18,1,224,12,11,17,80,17,11,12,12,11,17,8,15,1,1,15,8,7,1,1,7, +80,7,1,1,7,8,15,1,1,15,8,17,11,12,87,14,4,9,13,1,1,15,15,1,14,13,19,27,14,14,4,9, +13,1,1,15,15,1,1,13,13,19,27,14,71,15,1,1,15,32,53,44,8,7,7,8,44,53,32,15,1,1,15,32, +35,31,31,35,32,240,128,128,0,5,0,32,255,192,1,160,1,192,0,13,0,29,0,49,0,69,0,117,0,0,19,53, +52,39,38,35,34,7,6,29,1,51,50,23,39,53,52,39,38,35,34,7,6,29,1,50,51,54,59,1,23,50,55,49, +54,61,1,52,39,38,35,34,7,6,29,1,20,23,22,51,55,34,7,49,6,29,1,20,23,22,51,50,55,54,61,1, +52,39,38,35,7,38,39,6,35,34,39,22,23,6,7,6,7,35,38,39,54,55,51,50,55,54,53,52,39,38,43,1, +34,7,6,29,1,22,31,1,21,51,53,54,55,54,61,1,6,35,34,39,224,9,9,14,14,9,9,40,13,11,96,9, +9,14,14,9,9,1,1,3,3,56,160,14,9,9,9,9,14,14,9,9,9,9,14,96,14,9,9,9,9,14,14,9, +9,9,9,14,33,19,8,16,20,11,11,5,1,1,20,20,31,72,15,1,1,15,72,17,11,12,12,11,17,128,17,11, +12,1,42,53,224,29,17,18,14,18,19,14,1,12,148,14,9,9,9,9,14,144,4,4,112,14,9,9,9,9,14,113, +1,16,9,9,14,96,14,9,9,9,9,14,96,14,9,9,96,9,9,14,64,14,9,9,9,9,14,64,14,9,9,150, +12,21,11,4,13,15,31,20,20,1,1,15,15,1,12,11,17,17,11,12,12,11,17,63,53,32,38,78,85,19,29,30, +37,65,9,10,0,3,0,0,255,192,1,128,1,192,0,35,0,53,0,71,0,0,19,6,7,49,6,7,17,22,23,22, +63,1,54,31,1,22,63,1,54,31,1,22,63,1,54,31,1,22,55,54,55,17,38,39,38,35,7,34,39,49,38,53, +52,55,54,51,50,23,22,21,20,7,6,35,51,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,186,81, +51,52,2,1,9,9,8,25,12,10,43,11,11,41,12,12,41,11,11,43,10,12,25,8,9,9,1,2,56,56,84,58, +14,8,9,9,9,13,13,9,10,9,9,14,128,14,9,9,9,9,14,14,9,9,9,9,14,1,192,5,57,57,81,254, +248,11,4,4,8,18,8,10,48,10,10,45,11,11,45,10,10,48,10,8,18,8,4,4,11,1,16,83,55,54,224,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,0,0,2,0,0,255,192,2,63, +1,192,0,36,0,52,0,0,37,39,38,35,34,15,1,39,54,47,1,38,39,6,15,1,23,21,20,31,1,22,23,50, +55,23,7,6,31,1,22,51,50,63,1,54,39,37,38,39,7,6,21,20,23,22,51,50,63,1,38,47,1,2,56,23, +7,9,10,7,6,20,6,26,45,49,69,69,50,7,96,21,49,21,29,7,7,21,6,14,14,23,7,10,9,7,91,14, +15,254,215,6,4,240,21,21,22,28,28,23,209,6,6,48,252,22,7,7,5,20,37,28,45,48,1,1,48,8,48,14, +30,21,49,20,1,2,21,5,17,17,23,7,7,91,17,17,4,5,7,209,22,29,29,22,21,21,239,5,5,50,0,0, +0,16,0,0,255,192,2,128,1,192,0,8,0,17,0,26,0,35,0,44,0,53,0,112,0,125,0,140,0,157,0,174, +0,191,0,208,0,225,0,242,1,3,0,0,19,6,7,21,51,53,38,39,43,1,6,7,21,51,53,38,39,35,51,6, +7,21,51,53,38,39,35,51,6,7,21,51,53,38,39,35,23,38,39,35,6,7,21,51,53,37,6,7,21,51,53,38, +39,35,33,35,6,7,21,20,7,6,43,1,53,38,39,35,6,7,21,35,34,39,38,61,1,38,39,35,6,7,21,22, +23,22,23,51,21,35,6,7,6,7,22,23,33,54,55,38,39,38,39,35,53,51,54,55,54,55,53,38,47,1,54,55, +38,39,38,39,6,7,6,7,22,23,33,54,55,38,39,38,39,6,7,6,7,20,23,22,51,37,54,55,38,39,38,39, +48,49,6,7,6,7,20,23,22,51,7,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39, +38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55, +38,39,38,39,48,49,6,7,6,7,20,23,22,59,1,54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,59,1, +54,55,38,39,38,39,48,49,6,7,6,7,20,23,22,51,231,6,1,32,1,7,17,64,6,1,32,1,7,17,225,7, +1,32,1,7,16,64,7,1,32,1,7,16,88,1,7,16,7,1,32,254,71,6,1,32,1,7,17,2,9,32,15,1, +9,9,14,192,1,15,33,13,2,192,14,9,9,1,15,32,15,1,1,27,27,41,192,113,20,13,13,1,2,13,1,96, +16,1,1,13,14,20,112,192,41,27,27,1,1,15,17,23,2,1,11,10,2,1,11,10,2,2,21,253,192,23,2,1, +11,10,2,1,11,10,2,7,7,9,1,32,22,2,1,10,10,2,1,11,10,2,7,7,9,207,22,2,1,11,10,2, +1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2, +7,7,10,160,22,2,1,11,10,2,1,11,10,2,7,7,10,64,22,2,1,11,10,2,1,11,10,2,7,7,10,64, +22,2,1,11,10,2,1,11,10,2,7,7,10,1,32,1,7,120,120,7,1,1,7,120,120,7,1,1,7,120,120,7, +1,1,7,120,120,7,1,8,7,1,1,7,120,120,8,1,7,120,120,7,1,1,15,112,14,9,9,192,15,1,1,15, +192,9,9,14,112,15,1,1,15,112,41,27,27,1,64,1,13,13,20,16,1,1,15,20,14,13,1,64,1,27,27,41, +112,15,1,32,2,25,13,19,19,2,2,19,19,13,25,2,2,25,13,19,19,2,2,19,19,13,12,7,8,48,2,25, +13,19,19,2,2,19,19,13,11,8,8,48,2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2, +19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8, +2,25,13,19,19,2,2,19,19,13,11,8,8,2,25,13,19,19,2,2,19,19,13,11,8,8,0,0,0,3,0,0, +255,192,2,0,1,192,0,30,0,47,0,62,0,0,55,39,38,53,52,63,2,54,51,50,31,2,22,21,20,15,2,51, +39,38,63,1,7,6,15,1,51,39,63,2,54,31,2,22,15,2,6,47,2,38,55,1,33,6,7,22,23,22,23,33, +54,55,54,55,38,39,200,49,6,6,49,16,3,5,5,3,16,49,6,6,49,8,208,86,10,8,56,188,36,17,111,144, +8,31,25,12,4,4,12,25,4,4,25,12,4,4,12,25,4,4,1,9,254,32,15,1,1,13,14,20,1,160,20,14, +13,1,1,15,72,16,3,5,5,3,16,49,6,6,49,16,3,5,5,3,16,40,202,22,23,169,107,21,38,250,40,204, +12,25,4,4,25,12,4,4,12,25,4,4,25,12,4,4,254,236,1,15,20,14,13,1,1,13,14,20,15,1,0,0, +0,4,0,0,255,192,1,128,1,192,0,17,0,41,0,91,0,103,0,0,19,54,55,49,54,55,38,39,38,39,6,7, +6,7,22,23,22,23,7,54,63,1,54,53,38,39,38,35,34,7,6,15,1,6,21,22,31,1,50,55,50,51,37,35, +6,7,21,35,39,38,35,34,7,6,15,1,6,21,20,31,1,21,20,23,22,51,50,55,54,61,1,52,47,1,50,49, +52,49,55,23,22,59,1,21,22,23,51,54,55,17,38,39,1,6,21,22,23,22,51,54,63,1,39,7,240,20,14,13, +1,1,13,14,20,20,14,13,1,1,13,14,20,160,12,4,41,1,1,12,10,10,28,22,22,7,25,1,1,11,64,1, +1,1,1,1,32,15,14,1,35,47,19,24,21,15,16,5,27,1,9,87,9,9,13,13,9,10,19,47,1,19,23,11, +13,47,2,13,15,18,1,1,15,254,225,1,1,23,4,4,24,6,25,52,34,1,96,1,13,14,20,20,14,13,1,1, +13,14,20,20,14,13,1,191,1,11,158,2,2,11,4,2,16,16,27,98,2,2,12,3,16,1,127,1,15,16,47,17, +12,13,20,107,4,4,13,10,86,83,14,9,9,9,9,14,83,26,19,47,1,80,23,9,240,15,1,1,15,1,64,15, +1,254,200,4,4,24,7,1,1,23,101,53,138,0,0,0,0,5,0,0,255,224,2,127,1,152,0,111,0,125,0,138, +0,147,0,156,0,0,1,54,31,1,50,59,1,50,23,55,54,23,22,15,1,22,21,22,23,22,23,22,21,6,7,21, +6,7,35,38,39,53,35,21,6,7,35,38,39,53,38,39,38,39,48,49,38,39,38,39,6,7,22,23,22,23,21,22, +23,22,59,1,21,20,7,6,43,1,34,39,38,39,53,6,35,34,39,21,20,7,6,43,1,34,39,38,39,53,7,6, +39,38,63,1,54,39,54,55,54,55,35,51,50,23,22,23,54,55,39,38,55,49,23,34,7,49,6,21,20,23,22,51, +54,55,38,39,23,54,55,38,39,34,7,6,21,20,23,22,51,39,6,7,22,23,54,55,38,39,23,54,55,38,39,6, +7,22,23,1,151,17,16,18,3,2,32,18,15,15,17,16,15,15,12,11,2,16,21,12,13,1,31,1,15,32,14,2, +64,1,15,32,14,2,16,16,1,2,27,2,1,15,14,2,1,17,18,28,1,9,9,13,32,9,9,14,64,13,9,9, +1,28,36,33,31,9,9,14,64,13,9,9,1,17,11,21,19,7,21,9,1,2,54,55,82,1,65,32,30,30,25,3, +3,4,14,14,48,10,7,7,7,7,10,23,1,1,23,112,23,1,1,23,10,7,7,7,7,10,104,14,2,2,14,15, +1,1,15,64,15,1,1,15,14,2,2,14,1,145,14,14,17,6,15,14,14,17,17,13,19,23,16,6,10,20,19,25, +41,23,32,15,1,1,15,16,16,15,1,1,15,18,4,10,2,1,24,37,15,1,1,15,34,27,26,14,11,14,9,9, +64,14,9,9,9,9,14,76,12,12,76,14,9,9,9,9,14,119,41,19,7,11,21,49,18,20,82,56,56,5,8,7, +11,3,3,3,17,17,161,7,7,10,10,7,7,2,22,22,2,48,2,22,22,2,7,7,10,10,7,7,128,1,15,15, +1,1,15,15,1,32,1,15,15,1,1,15,15,1,0,0,0,2,0,0,255,192,2,64,1,192,0,80,0,89,0,0, +1,52,39,38,39,38,39,54,55,52,39,35,6,7,6,7,35,6,7,53,6,7,6,7,21,22,31,1,54,55,53,54, +55,20,21,6,21,22,23,7,6,31,1,22,23,51,54,55,54,47,1,55,23,21,20,23,22,59,1,50,55,54,61,1, +54,53,48,49,48,61,1,31,1,22,23,22,63,1,54,55,53,7,38,39,54,55,22,23,6,7,2,64,9,3,4,3, +3,17,5,8,120,54,37,36,1,161,44,28,37,24,25,1,2,13,16,14,1,1,16,1,1,30,26,7,5,22,9,24, +32,17,9,9,3,22,24,133,9,9,13,31,14,8,9,35,17,19,6,11,11,12,33,19,1,64,14,1,1,14,14,1, +1,14,1,115,13,9,4,4,3,4,10,20,9,1,1,36,37,54,1,32,1,1,25,25,37,56,14,1,1,1,15,56, +20,12,2,2,2,2,43,27,68,19,20,87,23,1,1,11,12,16,85,64,23,134,14,9,9,9,9,14,162,32,46,1, +102,7,38,11,4,5,5,13,9,21,77,19,1,15,15,1,1,15,15,1,0,1,0,0,255,192,2,64,1,192,0,60, +0,0,37,6,7,49,6,7,35,23,6,7,6,7,35,39,55,54,47,1,38,7,6,31,1,7,6,31,1,35,38,39, +38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1,23,22,7,49,2, +64,1,9,9,13,32,1,1,18,18,27,123,38,81,12,12,118,13,9,8,7,60,85,10,6,31,102,27,18,18,1,32, +14,9,9,10,1,0,11,11,12,10,106,9,9,14,32,14,9,9,53,12,1,192,13,9,9,1,160,27,18,18,1,64, +67,13,12,93,7,8,9,12,83,71,9,12,52,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9, +9,9,9,14,121,47,10,14,0,1,0,0,255,224,1,128,1,160,0,103,0,0,19,6,39,49,38,39,38,55,54,63, +1,54,59,1,22,23,22,23,20,7,51,50,23,22,21,20,7,6,43,1,6,15,1,51,50,23,22,21,20,7,6,43, +1,6,21,22,23,22,23,51,50,63,1,54,23,22,23,22,7,6,15,1,6,7,35,38,39,38,39,52,55,35,34,39, +38,53,52,55,54,59,1,54,63,1,35,34,39,38,53,52,55,54,59,1,54,55,38,39,38,39,35,34,15,1,115,10, +13,12,9,8,1,2,10,6,43,55,43,48,32,32,1,4,20,14,9,9,9,9,14,68,2,3,50,123,14,9,9,9, +9,14,229,11,1,13,14,20,44,33,25,6,11,12,13,8,9,1,2,11,5,43,55,44,47,32,32,1,4,20,14,9, +9,9,9,14,68,2,3,51,124,14,9,9,9,9,14,229,10,1,1,13,14,21,43,33,25,7,1,72,9,1,2,11, +10,13,12,9,5,34,1,32,32,47,17,15,9,9,14,14,9,9,2,1,29,9,9,14,14,9,9,13,18,21,14,13, +1,20,5,9,2,2,10,11,12,13,8,6,33,1,1,32,32,48,16,15,9,9,14,14,9,9,2,1,29,9,9,14, +14,9,9,13,19,20,14,13,1,20,4,0,0,3,0,0,0,0,2,64,1,128,0,36,0,54,0,72,0,0,1,6, +7,49,6,7,49,6,23,22,23,22,23,22,55,54,63,1,54,55,22,31,1,22,23,22,55,54,55,54,55,54,39,38, +39,38,39,3,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,33,38,39,49,38,39,54,55,54,55,22, +23,22,23,6,7,6,7,1,32,123,62,63,21,21,2,2,50,49,75,21,17,17,11,20,10,16,16,10,20,11,17,17, +21,75,49,50,2,2,21,21,63,62,123,128,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,0,27,18, +18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,128,1,33,33,48,47,48,80,47,46,1,1,8,8,22,40,18, +1,1,18,40,22,8,8,1,1,47,46,80,48,47,48,33,33,1,255,0,1,18,18,27,27,18,18,1,1,18,18,27, +27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,27,18,18,1,0,2,0,0,255,224,2,0,1,160,0,15, +0,21,0,0,37,3,38,35,34,7,3,6,23,22,23,33,54,55,54,39,3,23,35,7,39,55,1,247,223,9,15,15, +9,223,17,15,17,32,1,144,32,17,15,17,247,72,72,48,31,79,54,1,94,12,12,254,162,28,29,27,2,1,28,29, +28,1,26,112,64,53,123,0,0,4,0,0,255,192,2,128,1,192,0,91,0,96,0,101,0,106,0,0,1,22,23,49, +22,23,21,6,7,6,7,35,21,33,50,23,22,21,20,7,6,43,1,21,51,22,23,22,23,21,6,7,6,7,35,38, +39,38,39,53,54,55,54,55,51,53,33,21,51,22,23,22,23,21,6,7,6,7,35,38,39,38,39,53,54,55,54,55, +51,53,35,34,39,38,53,52,55,54,51,33,53,35,38,39,38,39,53,54,55,54,55,51,7,21,51,53,35,3,53,35, +21,51,55,21,51,53,35,1,144,20,14,13,1,1,13,14,20,48,1,0,14,9,9,9,9,14,96,48,20,14,13,1, +1,13,14,20,160,20,14,13,1,1,13,14,20,48,255,0,48,20,14,13,1,1,13,14,20,160,20,14,13,1,1,13, +14,20,48,96,14,9,9,9,9,14,1,0,48,20,14,13,1,1,13,14,20,160,144,128,128,32,128,128,192,128,128,1, +192,1,13,14,20,96,20,14,13,1,32,9,9,14,14,9,9,32,1,13,14,20,96,20,14,13,1,1,13,14,20,96, +20,14,13,1,32,32,1,13,14,20,96,20,14,13,1,1,13,14,20,96,20,14,13,1,32,9,9,14,14,9,9,32, +1,13,14,20,96,20,14,13,1,64,64,64,254,128,64,64,64,64,64,0,0,4,0,0,255,224,2,128,1,160,0,8, +0,17,0,143,0,190,0,0,19,54,55,38,39,6,7,22,23,39,6,7,22,23,54,55,38,39,37,34,7,22,23,22, +23,22,29,1,6,7,38,39,53,38,39,38,7,6,7,6,7,6,29,1,35,50,55,54,53,52,39,38,43,1,38,39, +38,61,1,22,51,50,63,1,23,22,51,50,55,22,23,22,23,51,54,55,35,54,55,54,51,50,55,54,53,52,39,38, +35,34,7,52,53,54,61,1,52,53,52,53,54,55,38,39,35,38,39,38,43,1,34,7,6,7,35,6,7,22,23,6, +21,20,29,1,20,23,21,22,23,22,23,22,23,51,54,55,54,55,54,55,38,39,38,39,5,53,54,55,54,55,51,22, +23,22,23,21,6,7,6,7,34,47,1,48,51,50,63,1,54,61,1,38,39,35,6,29,1,22,31,1,22,51,50,49, +7,6,35,38,39,38,39,224,15,1,1,15,15,1,1,15,128,15,1,1,15,15,1,1,15,1,122,13,1,1,9,34, +20,20,1,15,15,1,1,8,9,11,45,5,22,14,13,160,14,9,9,9,9,14,92,23,8,5,8,8,16,15,17,17, +15,16,11,10,10,24,25,32,37,10,29,76,1,10,10,11,14,9,9,9,9,14,24,25,1,15,1,1,15,11,14,27, +26,34,64,34,26,27,14,11,15,1,1,16,1,16,1,30,29,51,50,63,160,63,50,51,29,30,1,2,46,46,72,254, +102,1,18,18,27,64,27,18,18,1,1,13,13,21,6,6,34,1,3,4,8,14,1,12,38,13,1,12,8,4,3,1, +33,6,6,21,13,13,1,1,32,1,15,15,1,1,15,15,1,32,1,15,15,1,1,15,15,1,64,13,9,3,10,33, +34,26,112,15,1,1,15,92,11,6,6,5,24,51,13,21,22,27,32,9,9,14,14,9,9,1,23,20,20,2,2,6, +8,8,6,2,29,18,18,1,38,26,19,7,6,9,9,14,14,9,9,13,1,1,5,6,16,1,1,1,2,8,19,15, +1,29,17,18,18,17,29,1,15,19,8,2,1,1,1,16,30,23,43,63,50,51,29,30,1,1,30,30,51,51,63,74, +53,52,11,96,16,27,18,18,1,1,18,18,27,16,21,13,13,1,3,14,1,4,6,13,7,11,1,1,11,7,13,6, +4,1,14,3,1,13,13,21,0,3,0,0,0,0,2,0,1,128,0,19,0,28,0,45,0,0,1,6,7,49,6,7, +21,22,23,22,23,54,55,54,55,53,38,39,38,39,21,38,39,54,55,22,23,6,7,55,38,39,6,7,38,53,54,55, +54,55,22,23,22,23,20,7,1,0,112,71,71,2,3,72,72,109,109,72,72,3,2,72,71,111,81,55,53,83,83,53, +55,81,181,70,111,111,70,11,2,54,54,82,81,54,55,2,11,1,128,1,40,40,63,98,60,40,40,2,2,40,40,60, +98,63,40,40,1,224,1,22,24,1,1,24,22,1,54,40,2,2,40,12,14,34,23,22,1,1,22,23,34,14,12,0, +0,3,0,16,255,192,1,176,1,192,0,58,0,76,0,94,0,0,37,35,39,38,47,1,38,35,34,15,1,6,21,20, +23,22,23,50,63,1,54,51,50,51,23,7,6,23,20,31,1,7,6,21,22,23,22,51,54,63,1,54,53,38,47,1, +55,23,22,23,51,50,55,54,53,52,39,38,35,39,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,15, +1,35,34,7,6,21,20,23,22,59,1,54,63,1,39,38,39,1,144,44,26,21,41,71,12,10,33,26,39,13,9,9, +14,11,9,39,9,11,3,3,14,37,6,1,31,85,27,2,1,22,4,5,22,9,31,2,1,23,61,32,20,14,28,55, +14,9,9,9,9,14,112,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,158,15,67,14,9,9,9,9,14, +78,30,14,8,10,26,12,224,53,40,11,21,3,20,30,10,16,13,9,9,1,7,30,7,5,87,12,13,36,19,51,87, +5,5,22,9,1,1,21,101,7,6,27,15,36,78,41,26,1,9,9,14,14,9,9,128,1,13,14,20,20,14,13,1, +1,13,14,20,20,14,13,1,222,34,9,9,14,14,9,9,1,28,21,6,16,26,0,0,0,3,0,0,255,224,2,64, +1,160,0,14,0,34,0,48,0,0,19,6,7,49,6,7,21,22,23,51,53,38,39,38,39,19,53,51,53,38,39,38, +39,33,22,23,17,22,23,22,55,54,55,54,53,55,21,6,7,6,7,33,54,55,54,55,38,39,33,48,20,14,13,1, +1,15,80,1,13,14,20,208,224,1,27,27,41,254,240,15,1,1,21,22,31,24,14,15,32,1,27,27,41,1,16,48, +31,32,1,1,15,254,240,1,160,1,13,14,20,64,15,1,80,20,14,13,1,254,163,61,192,41,27,27,1,20,28,254, +208,30,19,18,4,4,19,19,24,29,32,41,27,27,1,1,32,31,48,15,1,0,0,0,0,4,0,0,255,193,1,191, +1,192,0,29,0,47,0,65,0,108,0,0,1,20,7,49,6,7,21,20,7,6,43,1,34,39,38,39,53,38,39,38, +39,54,55,54,55,22,23,22,23,49,7,50,55,49,54,53,52,39,38,35,34,7,6,7,22,23,22,51,55,34,7,49, +6,21,20,23,22,51,50,55,54,53,52,39,38,35,5,54,55,49,54,31,1,55,54,23,22,23,22,7,6,15,1,23, +22,23,22,7,6,7,6,47,1,7,6,39,38,39,38,55,54,63,1,39,38,39,38,55,49,1,112,18,17,29,9,9, +14,97,13,9,9,1,29,17,17,1,2,41,41,60,62,41,40,2,201,14,9,9,9,9,14,13,9,9,1,1,9,9, +13,113,14,9,9,9,9,14,14,9,9,9,9,14,254,235,7,12,12,12,177,179,12,12,12,7,5,4,4,12,134,134, +12,4,4,5,7,12,12,12,179,177,12,12,12,7,5,4,4,12,134,134,12,4,4,5,1,64,34,27,28,17,22,14, +9,9,9,9,14,22,17,28,27,34,54,37,36,1,1,36,37,54,48,9,9,14,14,9,9,9,9,14,14,9,9,64, +9,9,14,14,9,9,9,9,14,14,9,9,162,12,4,4,5,89,89,5,4,4,12,12,12,12,7,67,67,7,12,12, +12,12,4,4,5,89,89,5,4,4,12,12,12,12,7,67,67,7,12,12,12,0,0,0,0,1,0,0,255,192,2,128, +1,192,0,11,0,0,19,54,23,1,22,7,6,39,1,38,55,49,5,15,19,2,80,16,12,15,19,253,176,16,12,1, +183,16,12,254,48,15,19,16,12,1,208,15,19,0,0,0,0,1,0,12,255,192,2,51,1,192,0,125,0,0,37,22, +15,1,6,47,2,23,22,15,1,6,47,1,38,63,1,39,20,21,20,21,6,7,6,7,38,39,38,39,52,53,52,53, +7,23,22,15,1,6,47,1,38,63,1,15,1,6,47,1,38,63,1,54,63,1,39,38,47,1,38,63,1,54,31,2, +39,38,63,1,54,31,1,22,15,1,23,53,38,55,54,55,54,23,21,51,53,54,23,22,23,22,21,20,21,20,29,1, +55,39,38,63,1,54,31,1,22,15,1,63,1,54,31,1,22,15,1,6,15,1,23,22,31,1,2,51,3,13,16,14, +6,24,80,54,8,3,28,5,15,15,14,2,25,38,1,27,27,41,41,27,27,1,38,25,2,14,15,15,5,28,3,8, +54,80,24,6,14,16,13,3,27,4,10,105,105,10,4,27,3,13,16,14,6,24,80,54,8,3,28,5,15,15,14,3, +24,54,1,15,15,24,10,1,32,1,10,23,15,15,54,25,2,14,15,15,5,28,3,8,54,80,24,6,14,16,13,3, +27,4,10,105,105,10,4,27,46,14,5,4,3,13,77,32,62,10,12,110,14,2,4,5,15,98,45,2,1,2,2,41, +27,27,1,1,27,27,41,2,2,1,2,45,98,15,5,4,2,14,110,12,10,62,32,78,13,3,4,6,13,89,11,4, +43,42,5,10,89,14,5,4,3,13,78,32,63,10,12,110,14,2,4,5,15,98,62,24,28,21,22,9,1,9,24,24, +9,1,9,20,20,27,1,1,1,1,24,62,98,15,5,4,2,14,110,12,10,62,32,78,13,3,4,6,13,89,11,4, +43,42,4,11,89,0,0,0,0,7,0,0,255,192,2,64,1,192,0,31,0,40,0,49,0,58,0,67,0,85,0,103, +0,0,19,6,7,49,6,7,21,20,7,6,7,6,7,6,23,22,51,33,54,55,54,53,54,55,54,53,39,52,55,54, +55,33,7,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,51,38,39,54,55,22,23,6,7,51,38,39, +54,55,22,23,6,7,55,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,17,38,39,49,38,53,52,55, +54,55,22,23,22,21,20,7,6,7,127,40,27,27,1,5,6,11,4,5,3,5,5,8,1,25,22,8,1,10,7,7, +1,17,16,28,254,227,31,15,1,1,15,15,1,1,15,63,15,1,2,14,14,2,1,15,64,14,2,2,14,15,1,1, +15,64,14,2,2,14,15,1,1,15,192,41,27,27,1,1,27,27,41,41,27,28,1,1,28,27,41,13,10,9,9,10, +13,14,9,9,9,9,14,1,192,2,54,54,82,172,25,22,22,32,12,14,8,6,7,1,21,2,1,27,29,28,39,172, +63,50,50,29,224,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,15, +1,1,15,15,1,224,2,54,55,81,82,54,54,2,2,54,54,82,82,54,54,2,255,0,1,18,18,27,27,18,18,1, +1,18,18,27,27,18,18,1,0,5,0,0,255,192,2,128,1,192,0,110,0,115,0,133,0,152,0,161,0,0,19,54, +55,49,54,55,51,50,23,22,31,1,51,53,52,63,1,54,55,54,23,22,23,22,15,1,6,29,1,51,50,23,22,29, +1,6,15,1,38,35,6,7,35,20,7,6,43,1,6,7,23,22,21,20,15,1,6,35,34,47,1,6,7,21,20,7, +6,43,1,34,39,38,61,1,38,39,7,6,35,34,47,1,38,53,52,63,1,38,39,35,34,39,38,61,1,52,55,54, +59,1,54,55,39,38,53,52,63,1,54,23,53,51,21,51,39,35,23,6,7,49,6,7,22,23,22,23,54,55,54,55, +38,39,38,39,5,54,55,54,51,50,51,22,23,22,23,6,7,6,7,38,39,38,39,23,54,55,38,39,6,7,22,23, +96,1,18,18,27,106,20,16,16,8,48,106,17,2,7,12,12,12,12,4,4,5,3,10,56,17,11,12,1,22,43,21, +25,61,36,79,9,9,14,8,2,5,7,9,9,23,10,12,13,10,6,7,7,9,9,14,32,14,9,9,7,7,6,10, +13,12,10,23,9,9,6,3,3,8,14,9,9,9,9,14,8,3,3,6,9,9,23,15,18,64,145,39,106,16,34,23, +22,1,1,22,23,34,34,23,22,1,1,22,23,34,1,8,2,35,22,29,4,4,34,23,22,1,1,25,25,37,37,25, +25,1,88,22,2,2,22,22,2,2,22,1,128,27,18,18,1,11,11,18,120,34,38,33,5,12,4,4,5,7,12,12, +12,5,21,22,34,12,11,17,45,27,14,27,9,2,46,14,9,9,7,7,6,10,13,12,10,23,9,9,7,5,2,8, +14,9,9,9,9,14,8,2,5,7,9,9,23,10,12,13,10,6,7,7,9,9,14,32,14,9,9,7,7,6,10,12, +13,10,23,13,6,129,96,96,192,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,168,46,26,16,4,24,25, +35,37,25,25,1,1,25,25,37,24,2,22,22,2,2,22,22,2,0,0,0,7,0,0,255,192,1,192,1,192,0,8, +0,13,0,32,0,41,0,62,0,74,0,80,0,0,1,38,35,6,7,6,7,51,55,23,38,39,7,51,7,54,55,49, +54,55,52,39,52,39,35,6,21,6,21,22,23,22,31,1,35,23,54,55,38,39,38,39,55,35,34,7,23,51,22,23, +22,23,6,7,51,50,55,54,53,38,39,38,39,5,20,23,49,22,59,1,53,6,7,6,21,55,21,51,39,6,7,1, +21,24,29,41,31,32,14,81,90,66,13,24,66,103,119,54,37,36,1,1,1,252,1,1,1,36,37,54,48,45,59,32, +2,1,13,14,20,3,102,8,8,50,65,34,23,22,1,1,15,77,15,10,10,2,49,49,73,254,237,10,10,15,29,30, +17,17,96,153,125,15,13,1,180,12,1,21,22,36,68,68,29,21,50,176,1,36,37,54,6,6,2,2,2,2,6,6, +54,37,36,1,160,94,12,34,20,14,13,1,112,1,79,1,22,23,34,28,20,10,10,15,73,49,49,2,173,15,10,10, +169,24,35,34,41,155,190,201,5,6,0,0,0,3,0,0,0,0,2,128,1,128,0,31,0,49,0,67,0,0,1,33, +6,7,6,7,17,22,23,22,23,51,54,63,1,54,55,22,31,1,22,23,51,54,55,54,55,17,38,39,38,39,5,38, +39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,33,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7, +6,7,2,64,254,0,27,18,18,1,1,18,18,27,128,41,18,27,14,28,28,14,27,19,40,128,27,18,18,1,1,18, +18,27,254,96,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27,1,64,27,18,18,1,1,18,18,27,27,18, +18,1,1,18,18,27,1,128,1,18,18,27,255,0,27,18,18,1,2,36,61,28,1,1,28,61,36,2,1,18,18,27, +1,0,27,18,18,1,240,1,18,18,27,27,18,17,1,1,18,17,27,27,18,18,1,1,18,18,27,27,18,17,1,1, +18,17,27,27,18,18,1,0,0,4,0,0,255,194,1,255,1,192,0,35,0,60,0,89,0,116,0,0,19,31,1,22, +51,48,49,48,49,50,63,2,54,53,48,53,38,47,1,49,39,38,35,48,49,48,49,34,15,2,6,21,20,23,5,52, +47,2,38,35,34,15,2,6,21,20,31,2,22,51,50,63,2,54,53,1,23,22,51,50,63,2,54,53,52,47,2,34, +49,38,35,34,21,48,35,15,1,6,21,20,31,2,54,55,53,55,54,47,1,38,7,5,35,6,7,21,7,6,21,20, +31,1,22,51,50,55,1,51,4,49,21,2,4,4,2,21,49,4,1,3,49,21,2,4,4,2,21,49,4,4,1,251, +4,49,21,1,4,4,2,21,49,4,4,49,21,2,4,4,2,21,49,3,254,208,13,2,1,2,2,12,30,2,2,30, +11,1,1,3,2,1,13,29,2,2,29,192,14,1,92,9,9,18,11,11,254,233,43,14,1,118,10,9,42,9,14,13, +10,1,23,22,1,43,22,49,4,4,49,21,2,4,1,3,2,21,49,4,4,49,21,2,4,4,1,219,4,2,21,49, +4,4,49,21,2,4,4,2,21,49,4,4,49,21,2,4,1,48,30,2,2,30,12,2,2,2,2,12,30,2,2,30, +12,2,2,2,2,12,127,1,15,28,102,10,12,18,9,8,251,2,13,37,106,10,13,13,10,42,9,10,1,54,0,0, +0,3,0,0,255,192,2,0,1,192,0,36,0,73,0,110,0,0,19,33,54,55,54,55,38,39,38,39,35,34,7,6, +21,20,23,22,59,1,50,23,22,21,20,7,6,35,33,34,7,6,21,20,23,22,51,23,35,34,7,6,21,20,23,22, +59,1,50,23,22,21,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,38,39,38,39,37,33,34,7, +6,21,20,23,22,51,33,50,23,22,21,20,7,6,43,1,34,7,6,21,20,23,22,59,1,54,55,54,55,38,39,38, +39,32,1,64,41,27,27,1,1,27,27,41,32,14,9,9,9,9,14,32,14,9,9,9,9,14,254,192,14,9,9,9, +9,14,128,128,14,9,9,9,9,14,128,14,9,9,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,1,27,27, +41,1,0,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,32,14,9,9,9,9,14,32,41,27,27,1,1, +27,27,41,1,0,1,27,27,41,41,27,27,1,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,128, +9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,1,27,27,41,41,27,27,1,96,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,1,27,27,41,41,27,27,1,0,0,0,0,2,0,0,255,192,2,0, +1,192,0,32,0,37,0,0,1,39,38,15,1,6,23,7,38,7,6,15,1,6,21,20,31,1,22,51,50,63,1,54, +55,54,39,55,22,63,1,54,39,1,39,55,23,7,1,251,68,11,11,23,9,9,76,36,38,38,29,158,19,19,90,20, +25,26,20,158,29,6,7,15,77,11,12,22,10,10,254,184,90,122,90,122,1,119,68,10,10,22,12,11,77,15,7,6, +29,158,20,25,26,20,90,19,19,158,29,38,38,36,76,9,9,23,11,11,254,162,90,122,90,122,0,0,0,4,0,32, +255,192,2,32,1,192,0,17,0,35,0,72,0,126,0,0,55,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,33,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,7,54,39,38,7,38,39,6,7,38,7,6, +23,6,7,22,23,6,23,22,51,54,55,22,23,54,55,22,23,54,55,54,39,54,55,38,39,55,38,39,49,38,39,48, +35,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,51,54,55, +54,55,54,55,22,23,22,23,22,23,51,54,55,54,55,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +1,160,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,119,7,17,19,23,12,25,25,12,23,19,17,7,22, +1,1,22,7,17,13,17,6,6,12,25,25,12,6,7,16,13,17,7,22,1,1,22,167,1,27,27,41,1,1,2,1, +22,23,34,38,23,14,26,26,33,48,31,32,1,2,29,18,18,1,1,27,27,41,43,6,9,21,30,21,30,30,21,30, +21,9,6,43,41,27,27,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13, +1,1,13,14,20,20,14,13,1,11,23,19,17,7,22,1,1,22,7,17,19,23,12,25,25,12,23,19,13,1,2,22, +1,1,22,2,1,1,12,19,23,12,25,25,12,139,41,27,27,1,8,8,34,23,22,1,1,28,28,16,17,1,32,31, +48,11,10,10,24,25,32,41,27,27,1,12,10,20,1,20,1,1,20,1,20,10,12,1,27,27,41,0,0,6,0,0, +255,192,2,63,1,192,0,32,0,64,0,77,0,90,0,103,0,116,0,0,37,38,39,49,38,39,34,7,38,39,6,7, +6,7,20,21,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,55,6,39,49,38,39,52,55,54,55,54, +39,38,35,6,7,6,7,22,23,22,23,22,23,22,51,22,51,54,55,54,39,15,1,6,23,22,51,50,63,1,54,39, +38,7,35,7,6,23,22,51,50,63,1,54,39,38,7,35,7,6,23,22,51,50,63,1,54,39,38,7,35,7,6,23, +22,51,50,63,1,54,39,38,7,1,95,6,22,21,30,19,15,28,50,41,27,27,1,28,18,17,1,1,22,23,34,1, +0,34,23,22,1,1,18,18,28,217,55,39,39,2,15,15,27,8,10,13,13,60,40,41,4,42,17,28,19,19,5,2, +3,5,5,69,43,5,11,228,32,10,17,6,6,12,8,32,11,18,18,14,96,32,10,17,6,6,12,8,32,11,18,18, +14,96,32,10,17,6,6,12,8,32,11,18,18,14,96,32,10,17,6,7,12,8,32,10,17,19,14,222,29,18,18,1, +7,37,2,1,27,26,41,1,1,6,22,21,30,34,22,22,1,1,22,23,33,30,21,22,5,2,8,32,33,54,31,26, +26,15,8,5,2,1,39,39,59,19,43,11,23,22,30,1,1,2,51,10,1,203,48,19,14,4,11,48,19,14,10,17, +48,19,14,4,11,48,19,14,10,17,48,19,14,4,11,48,19,14,10,17,48,19,14,4,11,48,19,14,10,17,0,0, +0,4,0,0,255,192,2,0,1,192,0,40,0,62,0,84,0,106,0,0,1,48,35,49,48,35,54,53,38,39,38,39, +6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38,39,3,22,23, +49,22,23,54,55,54,55,38,39,38,39,38,39,6,7,6,7,6,7,33,22,23,49,22,23,54,55,54,55,38,39,38, +39,38,39,6,7,6,7,6,7,51,22,23,49,22,23,54,55,54,55,38,39,38,39,38,39,6,7,6,7,6,7,1, +160,1,1,2,1,22,23,34,38,23,14,26,26,33,48,31,32,1,2,29,18,18,1,1,27,27,41,1,64,41,27,27, +1,1,27,27,41,48,1,13,14,20,20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1,254,192,1,13,14,20, +20,14,13,1,1,11,12,12,11,1,1,11,12,12,11,1,160,1,13,14,20,20,14,13,1,1,11,12,12,11,1,1, +11,12,12,11,1,1,64,8,8,34,23,22,1,1,28,28,16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1, +1,27,27,41,41,27,27,1,254,176,20,14,13,1,1,13,14,20,14,22,23,17,18,1,1,18,17,23,22,14,20,14, +13,1,1,13,14,20,14,22,23,17,18,1,1,18,17,23,22,14,20,14,13,1,1,13,14,20,14,22,23,17,18,1, +1,18,17,23,22,14,0,0,0,5,0,0,255,192,2,0,1,192,0,40,0,55,0,68,0,81,0,94,0,0,1,48, +35,49,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6,7,22,23,22,23,33,54, +55,54,55,38,39,38,39,7,38,15,1,6,23,22,51,50,63,1,54,39,38,39,35,38,15,1,6,23,22,51,50,63, +1,54,39,51,38,15,1,6,23,22,51,50,63,1,54,39,51,38,15,1,6,23,22,51,50,63,1,54,39,1,160,1, +1,2,1,22,23,33,38,22,16,26,26,33,47,32,32,1,2,29,18,18,1,1,27,26,41,1,63,42,28,27,1,1, +27,27,41,217,21,11,47,7,20,3,5,15,7,47,5,4,3,9,118,21,10,47,8,20,4,5,15,7,47,8,20,235, +21,10,48,6,19,4,5,15,7,47,7,19,118,21,11,47,7,19,4,4,15,7,47,9,19,1,64,8,8,34,23,22, +1,1,28,28,16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1,1,27,27,41,41,27,27,1,226,7,19,112, +21,11,2,15,112,9,9,9,4,7,19,112,21,11,2,15,112,20,11,7,19,112,21,11,2,15,112,20,11,7,19,112, +21,11,2,15,112,20,11,0,0,7,0,32,255,192,2,96,1,192,0,14,0,67,0,100,0,115,0,132,0,149,0,166, +0,0,1,38,39,6,7,6,7,20,23,22,23,54,55,54,55,7,54,55,49,54,55,22,23,54,55,48,49,48,49,47, +1,38,35,34,15,1,39,38,35,34,15,2,6,21,20,31,1,7,6,21,20,31,2,22,51,50,63,1,38,53,52,55, +38,39,38,53,5,38,39,49,38,39,34,7,38,39,6,7,6,7,20,21,6,7,6,7,22,23,22,23,33,54,55,54, +55,38,39,38,39,23,34,15,1,6,21,22,23,50,63,1,54,53,38,39,35,34,15,1,6,21,22,23,50,63,1,54, +53,52,39,38,43,1,34,15,1,6,21,22,23,50,63,1,54,53,52,39,38,43,1,34,15,1,6,21,22,23,50,63, +1,54,53,52,39,38,35,1,0,18,30,25,17,17,1,11,10,18,16,23,6,24,136,1,25,25,37,43,25,33,43,52, +13,2,8,4,2,63,63,2,3,9,2,13,75,9,2,43,43,2,9,75,13,2,8,4,2,20,5,11,23,14,14,1, +167,6,22,21,30,19,15,28,50,41,27,27,1,28,18,18,1,1,23,22,34,1,0,35,22,23,1,1,18,18,28,9, +12,8,32,4,2,22,12,8,32,4,2,22,96,12,8,32,4,2,21,12,8,32,4,6,7,10,96,12,8,32,4,2, +21,12,8,32,4,6,7,10,96,12,8,32,4,2,21,12,8,32,4,6,7,10,1,53,22,1,1,16,17,25,20,14, +15,7,18,12,34,28,36,37,25,24,1,2,31,24,1,12,75,9,2,43,43,2,9,75,13,2,8,4,2,63,63,2, +4,8,2,13,75,9,2,13,16,17,26,22,11,21,21,28,51,29,18,18,1,8,38,2,1,27,27,41,1,1,5,22, +21,29,34,23,22,1,1,22,22,35,29,22,21,5,189,11,48,6,7,23,2,11,48,6,7,23,2,11,48,6,7,23, +2,11,48,6,7,10,7,8,11,48,6,7,23,2,11,48,6,7,10,7,8,11,48,6,7,23,2,11,48,6,7,10, +7,8,0,0,0,5,0,0,255,192,2,127,1,192,0,25,0,79,0,100,0,121,0,142,0,0,23,22,23,49,22,59, +1,50,55,54,61,1,51,21,20,23,22,59,1,50,55,54,61,1,33,7,37,39,38,39,38,43,1,39,54,55,54,39, +38,15,1,39,38,7,6,23,22,23,22,23,50,21,34,7,6,15,1,6,31,1,22,23,51,50,63,1,23,33,53,22, +23,22,23,22,23,22,63,1,54,39,37,7,23,6,47,1,7,6,53,55,39,38,63,2,54,31,2,22,7,51,7,23, +6,47,1,7,6,39,55,39,38,63,2,54,31,2,22,7,51,7,23,6,47,1,7,6,39,55,39,38,63,2,54,31, +2,22,7,191,1,9,9,13,32,14,9,9,160,10,9,13,32,14,9,9,254,161,1,1,190,19,22,33,33,38,237,80, +15,2,2,12,7,8,42,43,6,6,9,1,2,12,4,6,1,1,1,2,2,75,11,8,15,9,19,31,13,10,38,54, +1,95,10,6,6,9,4,5,9,13,27,12,7,254,171,16,4,1,7,21,19,8,4,16,4,7,22,11,4,5,10,23, +6,4,112,16,4,1,7,21,20,7,1,4,16,4,7,22,11,4,5,10,23,7,4,112,16,4,1,7,20,20,7,1, +4,16,4,7,22,11,4,5,10,23,6,4,31,14,9,10,9,9,14,64,64,14,9,9,9,9,14,128,127,222,29,32, +18,18,81,16,20,20,18,8,6,42,43,5,7,14,17,16,13,4,3,1,1,2,2,99,16,18,28,17,1,9,35,108, +78,7,7,8,15,6,7,12,7,18,9,13,14,16,23,7,2,10,10,2,7,23,16,6,2,4,20,6,6,20,4,2, +6,16,23,7,2,10,10,2,7,23,16,6,2,4,20,6,6,20,4,2,6,16,23,7,2,10,10,2,7,23,16,6, +2,4,20,6,6,20,4,2,6,0,0,0,0,5,0,32,255,192,2,32,1,192,0,95,0,104,0,113,0,122,0,131, +0,0,1,53,38,39,38,7,6,39,38,39,38,39,38,7,49,52,39,38,35,34,7,6,21,17,22,23,51,54,55,53, +54,23,22,23,22,23,22,55,54,55,53,6,39,38,39,34,49,38,39,38,7,53,54,23,22,23,22,23,22,55,53,6, +39,38,39,34,49,38,39,38,7,53,54,23,22,23,22,23,22,55,53,6,39,38,39,38,39,34,49,53,22,23,22,23, +22,55,5,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,23,38,39,54,55,22,23,6,7,53,38,39, +54,55,22,23,6,7,2,32,1,16,17,19,66,39,40,33,34,49,49,85,9,9,14,14,9,9,2,13,33,15,1,76, +52,52,44,41,48,48,67,19,1,70,51,58,48,1,45,51,51,73,75,54,54,45,45,51,51,73,70,51,58,48,1,45, +51,51,73,75,54,54,45,45,51,51,73,85,51,44,33,33,8,2,11,14,30,54,53,94,254,128,15,1,1,15,15,1, +1,15,15,1,1,15,15,1,1,15,64,15,1,1,15,15,1,1,15,15,1,1,15,15,1,1,15,1,130,31,19,8, +8,8,30,2,2,13,14,3,2,34,14,9,9,9,9,14,254,48,15,1,1,15,112,34,2,2,14,13,3,3,26,9, +20,36,25,1,2,14,13,2,3,29,35,26,3,3,13,13,2,2,28,62,25,1,2,14,13,2,3,29,35,26,3,3, +13,13,2,2,28,69,33,2,1,11,10,5,33,3,5,15,5,4,38,74,1,15,15,1,1,15,15,1,64,1,15,15, +1,1,15,15,1,56,1,15,15,1,1,15,15,1,64,1,15,14,2,2,14,15,1,0,0,3,0,32,255,192,1,160, +1,192,0,17,0,44,0,62,0,0,55,34,7,49,6,21,20,23,22,51,50,55,54,53,52,39,38,47,1,55,54,39, +38,7,6,7,6,7,22,23,22,23,7,6,23,22,51,54,55,54,55,38,39,38,39,23,38,39,49,38,39,54,55,54, +55,22,23,22,23,6,7,6,7,224,14,9,9,9,9,14,14,9,9,9,9,14,16,25,2,5,6,9,79,51,51,2, +2,59,59,88,24,3,5,6,9,78,52,51,2,2,59,59,88,16,41,27,27,1,1,27,27,41,41,27,27,1,1,27, +27,41,225,9,9,14,14,9,9,9,9,14,13,9,9,1,127,75,9,6,7,1,11,58,57,82,88,59,59,2,75,9, +6,6,11,58,57,82,88,59,59,2,255,1,27,27,41,41,27,27,1,1,27,27,41,41,27,27,1,0,0,2,0,0, +255,192,2,0,1,192,0,36,0,71,0,0,1,22,23,21,22,23,22,23,51,50,23,22,21,20,7,6,35,33,34,39, +38,39,54,55,54,59,1,54,55,54,55,53,52,55,54,59,1,3,51,21,51,53,51,21,51,53,51,21,51,53,51,21, +48,51,48,31,1,22,7,6,7,33,38,39,38,63,1,54,49,48,49,53,1,8,22,2,61,43,42,11,3,14,9,9, +9,9,14,254,127,13,9,9,1,1,9,9,13,4,11,42,42,61,7,7,10,17,201,64,40,64,49,64,40,64,1,1, +48,18,5,8,23,254,63,22,8,5,18,48,1,1,192,2,22,11,11,42,43,61,9,9,14,14,9,9,9,9,14,14, +9,9,61,43,42,11,11,10,7,7,254,224,128,128,128,128,128,128,132,1,32,14,22,22,1,1,22,22,14,32,1,132, +0,4,0,0,255,192,1,255,1,191,0,57,0,75,0,93,0,102,0,0,1,6,7,49,6,7,22,23,22,23,22,23, +22,7,6,7,6,7,6,7,6,7,20,7,6,35,34,39,38,53,52,55,50,55,54,55,54,55,54,55,54,55,54,23, +22,23,22,23,22,23,54,55,54,55,54,23,22,7,3,38,39,49,38,39,6,7,6,7,22,23,22,23,54,55,54,55, +39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,6,7,38,39,54,55,22,23,1,255,9,16,16, +20,4,4,6,5,7,3,3,4,11,22,22,29,28,30,1,1,1,60,78,78,60,57,57,1,1,1,1,31,42,42,38, +38,22,7,7,7,2,1,2,1,2,57,50,50,30,9,7,7,2,192,1,36,37,54,54,36,37,1,1,37,36,54,55, +36,36,1,128,9,9,14,14,9,9,9,9,14,13,10,9,33,2,14,15,1,1,15,14,2,1,171,30,50,50,58,1, +1,2,1,2,7,7,7,22,39,38,42,42,31,1,1,1,1,57,57,60,78,78,60,1,1,1,30,28,29,22,22,11, +4,3,3,7,5,6,4,4,20,16,16,9,3,7,7,9,254,214,54,36,37,1,1,37,36,54,55,36,36,1,1,36, +36,55,32,14,9,9,9,9,14,13,10,9,9,11,12,80,15,1,1,15,15,1,2,14,0,6,0,0,255,192,2,64, +1,192,0,8,0,21,0,39,0,90,0,99,0,127,0,0,23,22,23,51,54,55,53,35,21,1,35,17,22,23,51,54, +55,17,52,39,38,35,5,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,31,1,35,39,38,43,1,34,7, +6,21,17,20,23,22,51,50,55,54,61,1,22,49,22,51,23,21,20,23,22,51,50,55,54,55,53,52,47,1,53,23, +22,59,1,50,55,54,53,52,39,38,35,39,21,51,53,35,34,7,6,21,51,23,7,6,23,22,51,22,55,22,23,22, +51,50,55,54,53,20,23,22,51,50,55,54,53,17,35,21,192,1,15,32,15,1,64,1,96,32,1,15,32,15,1,9, +9,14,254,32,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,160,51,45,19,26,19,26,19,19,9,9,14, +13,9,10,1,1,1,29,9,9,14,13,9,9,1,7,41,21,14,20,57,14,9,9,9,9,14,32,64,32,14,9,9, +96,32,31,3,10,10,14,24,8,1,9,9,13,14,9,9,9,9,14,14,9,9,192,48,15,1,1,15,176,176,1,240, +254,16,15,1,1,15,1,208,14,9,9,128,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,96,45,19,19, +19,26,255,0,14,9,9,9,9,14,101,1,1,43,56,14,9,9,9,9,14,56,16,13,61,81,21,14,9,9,14,14, +9,9,192,160,192,9,9,14,223,155,16,11,11,1,31,13,8,9,9,9,14,14,9,9,9,9,14,1,160,32,0,0, +0,2,0,0,255,192,1,192,1,192,0,24,0,88,0,0,37,35,55,54,39,38,15,1,6,23,22,59,1,7,6,23, +22,51,50,63,1,54,39,38,35,55,54,53,38,39,38,39,35,54,53,38,39,38,39,34,7,22,21,6,7,6,7,35, +6,7,6,7,20,23,6,7,6,7,22,23,22,23,51,38,39,38,63,1,54,23,50,23,22,15,1,51,22,23,22,7, +51,54,55,54,55,38,39,38,39,1,48,56,39,4,10,10,10,128,7,3,4,11,56,39,4,10,4,4,6,5,128,7, +3,3,11,69,11,1,18,18,27,6,6,1,27,27,41,8,7,15,1,22,23,34,16,27,18,18,1,11,33,21,20,1, +1,27,27,41,13,6,4,10,23,128,14,17,16,12,29,13,19,7,32,13,10,19,13,41,27,27,1,1,20,21,33,80, +90,11,8,6,7,111,8,10,10,90,11,8,4,4,111,8,10,11,141,16,19,27,18,18,1,15,17,41,27,27,1,2, +20,26,34,23,22,1,1,18,18,27,19,16,8,25,25,35,41,27,27,1,7,8,31,22,112,13,1,9,23,35,45,2, +29,27,22,1,27,27,41,35,25,25,8,0,0,3,0,0,255,224,2,128,1,160,0,40,0,72,0,109,0,0,1,6, +7,49,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,51,22,23,22,23,22,23,21,22,23,51,54,55, +53,38,39,38,39,38,7,23,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,23,22,23,21,22,23,51, +54,55,53,38,39,38,7,39,6,7,49,6,7,49,6,7,21,22,23,51,54,55,53,54,55,54,55,54,23,22,23,21, +22,23,51,54,55,53,38,39,38,39,38,7,1,56,88,70,71,41,41,1,1,15,32,15,1,1,35,35,58,59,72,71, +56,57,34,33,1,1,15,32,15,1,1,44,44,74,74,91,2,53,34,34,1,1,15,32,15,1,1,16,17,26,28,20, +19,1,1,15,32,15,1,2,38,38,56,1,61,49,49,29,28,1,1,15,32,15,1,1,43,43,67,70,47,47,2,1, +15,32,15,1,1,31,31,52,52,64,1,160,3,45,44,73,73,88,106,15,1,1,15,107,72,60,59,35,35,2,34,35, +57,57,71,112,15,1,1,15,112,91,73,73,42,42,1,192,4,37,38,53,108,15,1,1,15,110,26,19,18,3,1,18, +19,28,112,15,1,1,15,112,56,37,36,1,96,3,31,31,51,51,62,107,15,1,1,15,108,67,46,47,4,1,46,45, +70,112,15,1,1,15,112,64,51,51,29,30,1,0,0,0,0,5,0,0,255,224,2,128,1,160,0,13,0,34,0,55, +0,76,0,123,0,0,1,38,39,49,38,39,35,6,7,6,7,21,33,53,37,7,23,20,47,1,7,6,53,55,39,38, +63,2,54,31,2,22,7,51,7,23,20,47,1,7,6,53,55,39,38,63,2,54,31,2,22,7,51,7,23,20,47,1, +7,6,53,55,39,38,63,2,54,31,2,22,7,23,35,6,7,21,6,7,38,39,53,33,21,20,23,22,51,23,50,55, +54,61,1,51,21,20,23,22,59,1,50,55,54,61,1,51,21,22,23,22,23,22,55,54,55,53,38,39,2,32,2,45, +45,67,226,67,45,45,2,2,31,254,145,19,4,8,25,24,9,5,20,5,8,27,13,5,5,13,27,8,5,144,19,4, +8,25,24,9,5,20,5,8,27,13,5,5,13,27,8,5,144,19,4,8,25,24,9,5,20,5,8,27,13,5,5,13, +27,8,5,160,32,14,1,2,13,14,1,253,221,9,9,13,65,14,9,9,191,10,9,13,64,14,8,9,32,1,19,20, +32,38,25,26,1,1,15,1,1,68,45,44,2,2,45,45,67,64,64,21,20,27,9,3,13,13,3,10,27,20,6,3, +4,25,6,6,25,4,3,7,20,27,9,3,13,13,3,10,26,20,7,3,4,25,6,6,25,4,3,7,20,27,9,3, +13,13,3,9,27,20,7,3,4,25,6,6,25,4,3,7,149,2,13,64,14,1,1,14,111,159,14,8,9,2,9,9, +14,64,64,14,9,9,9,9,13,96,43,33,23,24,5,2,23,23,37,64,14,2,0,0,0,4,0,0,255,192,2,128, +1,192,0,32,0,47,0,62,0,79,0,0,55,51,22,23,54,55,51,54,55,54,55,38,39,38,39,34,7,38,39,38, +35,6,7,38,39,6,7,6,7,22,23,22,23,7,35,34,7,6,21,20,23,22,59,1,54,55,38,39,37,33,6,7, +20,23,22,51,33,54,55,52,39,38,35,7,33,34,7,6,21,20,23,22,51,33,54,55,52,39,38,35,144,156,35,49, +49,35,60,48,31,32,1,1,32,31,48,27,23,19,33,33,41,63,41,41,63,61,41,40,2,2,40,41,61,8,113,9, +7,7,7,7,9,113,22,2,2,22,1,224,253,240,22,2,7,7,9,2,16,22,2,6,7,10,64,254,191,9,7,7, +7,7,9,1,65,22,2,7,7,10,160,31,1,1,31,1,32,31,48,48,31,32,1,12,35,20,21,2,43,43,2,2, +40,41,61,61,41,40,2,176,7,7,9,10,7,8,2,22,22,2,96,2,21,10,7,8,2,21,10,7,8,96,7,7, +9,10,7,8,2,21,10,7,8,0,0,0,0,5,0,0,255,192,2,0,1,192,0,18,0,36,0,54,0,78,0,102, +0,0,55,53,38,39,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,1,6,7,49,6,7,22,23,22,23,54, +55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,38,39,49,38,39,6, +7,6,7,21,6,7,22,23,22,23,54,55,54,55,38,39,53,3,38,39,49,38,39,54,55,53,54,55,54,51,50,23, +22,23,21,22,23,6,7,6,7,160,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,1,0,41,27,27,1, +1,27,27,41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,160,1,32,31,48,48,31,32, +1,31,1,2,40,41,61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22, +23,34,125,211,15,1,1,15,211,12,33,20,14,13,1,1,13,14,20,33,12,1,67,1,27,27,41,41,27,27,1,1, +27,27,41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,16,48,31,32,1,1,32,31,48,167,37,52, +61,41,40,2,2,40,41,61,51,38,167,254,176,1,22,23,34,40,24,192,20,14,14,14,14,20,192,24,40,34,23,22, +1,0,0,0,0,5,0,0,255,192,2,0,1,192,0,18,0,42,0,66,0,84,0,102,0,0,55,53,38,39,6,7, +21,6,7,22,23,22,23,54,55,54,55,38,39,55,38,39,49,38,39,6,7,6,7,21,6,7,22,23,22,23,54,55, +54,55,38,39,53,3,38,39,49,38,39,54,55,53,54,55,54,51,50,23,22,23,21,22,23,6,7,6,7,1,6,7, +49,6,7,22,23,22,23,54,55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6, +35,160,1,15,15,1,30,2,1,13,14,20,20,14,13,1,2,30,96,1,32,31,48,48,31,32,1,31,1,2,40,41, +61,61,41,40,2,1,31,112,34,23,22,1,1,31,1,13,14,20,20,14,13,1,31,1,1,22,23,34,1,16,41,27, +27,1,1,27,27,41,41,27,27,1,1,27,27,41,14,9,9,9,9,14,14,9,9,9,9,14,125,19,15,1,1,15, +19,12,33,20,14,13,1,1,13,14,20,33,12,211,48,31,32,1,1,32,31,48,167,37,52,61,41,40,2,2,40,41, +61,51,38,167,254,176,1,22,23,34,40,24,192,20,14,14,14,14,20,192,24,40,34,23,22,1,1,192,1,27,27,41, +41,27,27,1,1,27,27,41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,0,2,0,0, +255,192,2,0,1,192,0,24,0,76,0,0,37,35,55,54,39,38,15,1,6,23,22,59,1,7,6,23,22,51,50,63, +1,54,39,38,39,55,48,35,49,48,35,54,53,38,39,38,39,6,7,38,39,38,35,6,7,6,7,20,23,6,7,6, +7,22,23,22,23,51,55,54,51,50,23,22,23,22,15,1,51,54,55,54,55,38,39,38,39,1,96,71,47,4,9,10, +10,153,8,3,4,11,71,47,4,9,3,6,6,5,153,8,3,4,11,64,1,1,2,1,22,23,34,38,23,14,26,26, +33,48,31,32,1,2,29,18,18,1,1,27,27,41,47,140,13,18,16,13,13,4,4,7,27,86,41,27,27,1,1,27, +27,41,97,105,12,8,6,7,128,7,11,10,106,11,8,4,4,128,7,10,11,1,223,8,8,34,23,22,1,1,28,28, +16,17,1,32,31,48,11,10,10,24,25,32,41,27,27,1,117,11,10,10,16,16,16,60,1,27,27,41,41,27,27,1, +0,4,0,0,255,192,1,192,1,192,0,12,0,24,0,36,0,51,0,0,1,54,39,38,39,33,6,7,6,23,33,54, +55,7,38,39,49,38,53,33,22,23,33,38,39,3,6,23,22,51,50,55,54,55,35,22,7,55,33,22,23,48,49,22, +23,51,54,55,52,53,38,39,1,152,11,5,7,16,254,145,21,3,1,6,1,98,13,36,20,17,11,11,254,175,18,35, +1,90,12,11,84,1,14,5,5,10,7,66,24,149,25,6,128,254,181,40,41,43,32,187,3,1,1,15,1,150,11,15, +15,1,2,21,41,32,22,32,154,19,16,16,17,60,36,15,13,254,223,17,8,2,7,65,56,35,66,230,31,20,21,25, +15,13,2,2,36,29,0,0,0,3,0,0,255,192,2,0,1,192,0,22,0,54,0,82,0,0,37,35,34,15,1,23, +22,51,50,55,54,55,54,31,1,22,51,50,63,1,39,38,35,39,50,55,23,51,55,22,51,54,55,54,55,38,39,38, +39,6,7,38,39,6,7,38,39,6,7,6,7,22,23,22,23,1,39,7,6,7,34,47,1,38,35,49,6,7,6,35, +34,47,1,7,6,23,22,23,33,54,55,54,39,1,48,96,16,10,55,13,8,12,12,8,17,27,27,18,32,8,11,12, +8,45,55,10,16,145,20,15,29,64,29,17,19,27,18,18,1,1,18,18,27,24,17,18,38,35,19,17,25,27,18,18, +1,1,18,19,26,1,91,101,41,18,26,26,18,31,8,12,12,8,18,27,27,18,8,101,11,8,9,20,1,192,20,9, +8,11,224,12,71,17,9,9,21,1,1,21,37,9,9,52,71,12,80,10,58,58,10,1,18,18,27,27,18,18,1,1, +14,29,2,2,29,14,1,1,18,18,27,27,18,18,1,254,195,129,48,19,1,20,37,9,1,9,20,20,11,128,17,16, +17,1,1,17,16,17,0,0,0,3,0,0,255,224,2,64,1,160,0,13,0,34,0,63,0,0,1,38,39,49,38,39, +33,6,7,6,7,17,33,17,15,1,6,7,38,35,48,49,34,47,1,38,55,54,31,1,55,54,23,22,7,23,35,21, +6,7,33,38,39,53,35,6,7,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,38,39,1,224,1,13,14,20, +254,224,20,14,13,1,1,128,101,88,6,11,1,2,9,6,56,15,13,16,18,37,72,15,19,16,12,149,16,1,15,254, +96,15,1,16,20,14,13,1,1,13,14,20,1,224,20,14,13,1,1,13,14,20,1,112,20,14,13,1,1,13,14,20, +254,208,1,48,87,112,8,1,1,6,48,14,19,15,13,31,92,16,12,15,19,121,112,15,1,1,15,112,1,13,14,20, +96,20,14,13,1,1,13,14,20,96,20,14,13,1,0,0,0,3,0,0,0,0,2,64,1,128,0,82,0,169,0,248, +0,0,37,38,39,49,38,53,49,48,49,38,35,34,7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6, +7,38,39,38,39,48,49,38,35,34,7,48,49,6,7,6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,23,54, +55,54,55,22,23,22,23,54,55,54,55,22,23,22,55,54,55,54,39,38,39,21,38,39,49,38,53,49,48,49,38,35, +34,7,48,49,6,7,6,7,38,39,38,39,48,49,38,35,34,7,48,49,6,7,6,7,38,39,38,39,48,49,38,35, +34,7,48,49,6,7,6,7,6,7,6,23,22,23,22,55,54,55,22,23,22,51,50,55,54,55,22,23,22,51,50,55, +54,55,22,23,22,55,54,55,54,39,38,39,37,54,55,22,23,22,23,54,55,54,55,22,23,22,23,54,55,54,55,22, +23,22,55,54,55,54,39,38,39,38,39,38,53,48,49,38,35,34,7,6,7,6,7,38,39,38,39,48,49,38,35,34, +7,6,7,6,7,38,39,38,39,48,49,38,35,34,7,6,7,6,7,6,7,6,23,22,23,22,55,2,38,23,12,12, +10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,2,12,11,23, +13,7,8,3,2,11,10,14,38,20,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15,20,38,14,10,11,2, +3,8,7,13,23,12,12,10,13,12,10,2,18,19,35,36,18,18,1,10,13,12,10,2,18,18,36,36,18,18,1,10, +13,12,10,1,12,12,23,13,7,8,3,2,11,10,14,38,20,15,24,24,33,33,24,24,15,15,24,24,33,34,23,24, +14,20,38,15,10,11,3,2,8,7,13,254,0,38,20,15,24,24,33,33,24,24,15,15,24,24,33,33,24,24,15,20, +38,14,10,11,3,2,8,7,13,23,12,12,10,13,12,10,1,18,19,36,36,18,18,1,10,13,12,10,1,18,19,36, +35,19,18,1,10,13,12,10,1,12,11,24,13,7,8,3,2,11,10,14,210,5,7,8,1,9,9,2,10,9,2,1, +10,10,2,9,9,2,10,9,2,1,10,9,3,9,9,2,7,7,5,2,11,10,14,13,7,8,3,8,13,9,8,7, +1,1,7,8,9,9,8,7,1,1,7,8,9,13,8,3,8,7,13,14,10,11,2,144,5,7,7,2,9,9,3,9, +10,1,1,10,9,3,9,9,3,9,10,1,1,10,9,3,9,9,1,8,7,5,2,11,10,14,13,8,7,2,9,13, +10,7,8,8,7,10,9,8,8,8,8,9,13,9,2,7,8,13,14,10,11,2,226,8,13,9,8,7,1,1,7,8, +9,9,8,7,1,1,7,8,9,13,8,3,8,7,13,14,10,11,3,4,7,8,1,9,9,2,10,9,2,2,9,10, +2,9,9,2,10,9,2,1,10,9,3,9,9,1,7,8,5,2,11,10,14,13,7,8,3,0,0,0,0,4,0,32, +255,192,1,159,1,192,0,17,0,35,0,68,0,86,0,0,63,1,39,7,6,7,6,31,1,22,51,50,55,54,55,54, +47,1,55,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,55,38,39,49,38,15,1,6,35,34,47,1, +38,7,6,7,6,23,22,31,1,22,23,21,51,53,54,63,1,54,55,54,39,15,1,23,7,6,23,22,23,22,51,50, +63,1,54,39,38,47,1,157,31,60,52,11,1,1,9,48,13,19,13,11,13,3,2,10,27,67,34,23,22,1,1,22, +23,34,34,23,22,1,1,22,23,34,185,10,16,16,14,41,40,48,48,40,41,14,16,16,10,9,3,2,14,41,18,20, +192,20,18,41,14,2,3,9,89,60,31,27,10,2,3,13,11,12,19,13,48,9,1,1,11,51,36,31,54,53,11,14, +15,12,64,16,8,11,15,16,14,36,253,1,22,23,33,33,23,23,1,1,22,23,33,34,22,23,1,14,14,2,3,9, +29,28,28,29,9,3,2,14,14,16,16,10,28,13,8,38,38,8,13,28,10,16,16,14,182,53,32,36,14,16,15,11, +8,16,64,12,15,14,11,53,0,4,0,0,255,192,2,0,1,182,0,10,0,45,0,63,0,81,0,0,19,35,54,55, +54,55,54,23,22,31,1,55,54,55,49,54,55,51,50,23,22,21,20,7,6,43,1,21,20,7,6,7,6,7,6,35, +34,39,38,39,38,39,38,53,33,53,1,54,55,49,54,55,22,23,22,21,20,7,6,7,38,39,38,39,33,6,7,49, +6,7,38,39,38,39,54,55,54,55,22,23,22,23,255,255,3,26,26,44,10,11,12,7,116,129,1,18,18,27,32,14, +9,9,9,9,14,32,17,17,32,31,41,41,46,43,42,41,31,32,17,17,1,128,254,159,1,13,14,20,21,13,14,14, +13,21,20,14,13,1,1,129,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,0,56,46,46,30,6,2, +3,10,169,32,27,18,18,1,9,9,14,14,9,9,64,38,36,35,27,27,14,15,15,14,27,27,35,36,38,64,254,208, +20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20, +0,5,0,0,255,193,2,64,1,192,0,84,0,102,0,113,0,124,0,135,0,0,37,38,39,38,39,54,53,38,39,38, +7,6,23,22,21,6,7,6,7,38,39,38,39,52,55,54,39,38,7,6,7,22,23,6,7,6,7,6,23,22,55,54, +55,54,23,22,23,22,7,6,7,6,7,6,21,20,23,22,55,54,55,22,23,22,55,54,53,52,39,38,39,38,39,38, +55,54,55,54,23,22,23,22,55,54,39,5,34,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,35,23,22,23, +54,55,54,55,38,7,6,7,39,54,23,54,55,38,35,34,7,22,23,3,54,55,38,39,38,7,22,23,22,23,2,64, +21,54,26,29,10,1,40,4,6,5,1,7,1,34,34,51,51,34,34,1,7,1,5,6,4,40,1,1,9,29,26,53, +22,1,5,6,4,14,15,45,46,46,27,24,12,12,44,15,21,6,6,62,54,27,18,18,27,54,61,7,6,21,15,44, +12,12,24,26,47,46,45,15,14,4,6,5,1,254,223,20,14,13,1,1,13,14,20,20,14,14,14,13,21,98,2,25, +36,22,22,3,34,31,9,36,132,37,33,34,13,38,44,44,38,13,34,89,25,2,36,9,30,35,3,22,22,36,164,61, +32,15,5,26,30,63,49,5,3,4,6,20,18,52,35,35,1,1,35,35,52,18,20,6,4,3,5,49,63,30,26,5, +15,32,60,7,3,3,4,17,8,25,12,13,45,45,47,48,27,9,5,2,6,6,2,11,31,16,24,24,16,31,11,2, +6,6,2,5,9,27,47,48,45,45,13,12,25,9,16,4,3,3,6,36,14,13,21,20,14,13,1,1,13,14,20,20, +14,14,58,35,26,27,40,39,48,9,18,50,34,245,10,10,16,36,17,17,35,17,254,206,26,36,33,50,18,9,48,39, +40,27,0,0,0,3,0,0,255,194,2,0,1,192,0,20,0,50,0,88,0,0,19,6,7,22,23,22,23,22,23,22, +23,50,51,48,49,54,55,38,39,38,39,55,34,7,49,6,21,20,23,22,51,22,23,22,23,22,23,20,23,22,51,50, +55,54,53,38,39,38,39,38,39,7,38,7,49,6,29,1,22,23,22,23,6,7,6,35,34,39,38,39,53,38,39,35, +6,7,21,22,23,22,55,54,55,54,55,54,39,38,39,218,22,4,1,21,62,43,43,6,3,21,1,1,21,1,7,56, +56,79,6,14,9,9,9,9,14,62,51,50,30,30,1,9,9,14,14,9,9,1,38,39,65,65,80,52,11,8,9,1, +16,29,2,1,13,14,20,20,14,13,1,2,22,48,22,2,2,51,50,72,41,30,29,10,11,33,32,59,1,96,1,21, +23,2,6,43,43,62,20,2,3,22,79,56,56,7,96,9,9,14,14,9,9,1,30,30,50,51,62,14,9,9,9,9, +14,80,65,65,39,38,1,227,2,7,7,12,50,16,5,12,32,21,13,13,14,13,20,246,21,2,1,22,247,69,42,42, +12,10,29,30,41,63,48,47,13,0,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,60,0,0,19,21, +51,53,52,55,54,51,50,23,22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22, +21,7,33,17,6,7,6,7,33,38,39,38,39,17,23,6,7,21,22,23,51,54,55,53,38,39,35,160,128,9,9,14, +14,9,9,48,20,14,13,1,254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14, +13,1,80,15,1,1,15,96,15,1,1,15,96,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14, +13,1,32,14,9,9,9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,64,1,15,96,15,1,1,15,96,15, +1,0,0,0,0,3,0,0,255,192,1,192,1,192,0,34,0,47,0,60,0,0,19,21,51,53,52,55,54,51,50,23, +22,29,1,51,22,23,22,23,21,33,53,54,55,54,55,51,53,52,55,54,51,50,23,22,21,7,33,17,6,7,6,7, +33,38,39,38,39,17,23,6,7,21,22,23,33,54,55,53,38,39,33,160,128,9,9,14,14,9,9,48,20,14,13,1, +254,64,1,13,14,20,48,9,9,14,14,9,9,160,1,192,1,13,14,20,254,160,20,14,13,1,80,15,1,1,15,1, +32,15,1,1,15,254,224,1,160,32,32,14,9,9,9,9,14,32,1,13,14,20,48,48,20,14,13,1,32,14,9,9, +9,9,14,160,254,240,20,14,13,1,1,13,14,20,1,16,64,1,15,64,15,1,1,15,64,15,1,0,0,7,0,0, +255,193,1,255,1,192,0,41,0,49,0,54,0,59,0,64,0,71,0,80,0,0,1,38,39,49,38,35,34,15,1,6, +7,6,31,1,22,23,22,63,1,54,51,50,23,22,7,6,7,5,6,7,6,31,1,22,23,22,55,37,54,55,54,39, +15,1,39,54,55,23,6,7,3,39,55,23,7,55,39,55,23,7,55,39,55,23,7,63,1,22,23,7,38,39,23,39, +54,55,54,53,23,6,7,1,242,22,39,39,46,42,39,28,11,4,3,7,33,7,12,12,13,27,8,9,17,10,7,3, +4,11,254,159,12,3,3,7,32,7,12,13,12,1,92,54,20,20,25,178,3,20,14,16,21,15,13,174,61,31,61,31, +107,60,31,60,31,111,60,31,60,31,21,46,12,10,45,9,14,82,60,5,3,1,61,3,7,1,101,44,23,24,23,15, +8,13,12,12,55,11,3,4,7,17,4,16,11,13,12,7,211,7,12,13,11,55,11,4,3,7,206,34,58,59,59,13, +3,62,7,3,62,1,6,254,184,39,18,38,19,64,39,18,39,18,67,37,19,39,17,196,45,9,13,46,15,8,108,20, +8,9,7,7,20,16,15,0,0,2,0,0,255,193,2,0,1,192,0,32,0,51,0,0,1,38,7,49,6,7,23,22, +7,6,35,34,47,1,3,6,23,22,63,1,39,38,55,54,31,1,55,54,55,54,39,38,39,55,54,39,49,38,39,6, +7,6,31,1,22,55,54,55,38,39,38,7,1,42,40,41,41,29,55,10,10,5,6,6,5,50,128,4,4,11,19,134, +49,10,10,11,11,57,102,37,20,22,16,16,47,92,15,8,7,31,38,1,2,33,8,36,42,42,33,25,33,33,31,1, +35,19,9,10,32,56,11,11,5,5,50,254,249,9,10,18,7,65,50,11,11,10,10,57,50,18,39,48,47,47,24,35, +32,32,33,25,33,42,42,35,8,33,1,2,38,30,7,8,15,0,0,0,0,10,0,0,255,192,2,0,1,192,0,51, +0,62,0,73,0,82,0,91,0,100,0,109,0,118,0,127,0,136,0,0,1,50,23,49,22,29,1,20,7,6,43,1, +21,51,50,23,22,31,1,22,29,1,6,7,6,7,33,38,39,38,39,53,52,63,1,54,55,54,59,1,53,35,34,39, +38,39,53,54,55,54,59,1,7,6,7,22,23,51,54,55,38,39,35,3,33,54,55,38,39,33,6,7,22,23,55,6, +7,22,23,54,55,38,39,23,54,55,38,39,6,7,22,23,7,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7, +22,23,7,6,7,22,23,54,55,38,39,55,54,55,38,39,6,7,22,23,7,6,7,22,23,54,55,38,39,1,32,14, +9,9,9,9,14,80,216,25,18,17,4,23,1,1,18,18,27,254,128,27,18,18,1,1,23,4,17,18,24,56,80,13, +9,9,1,1,9,9,13,225,192,15,1,1,15,160,15,1,1,15,160,16,1,96,15,1,1,15,254,160,15,1,1,15, +32,22,2,2,22,22,2,2,22,96,22,2,2,22,22,2,2,22,48,22,2,2,22,22,2,2,22,144,22,2,2,22, +22,2,2,22,48,22,2,2,22,22,2,2,22,144,22,2,2,22,22,2,2,22,48,22,2,2,22,22,2,2,22,1, +192,9,9,14,64,14,9,9,32,15,15,24,150,7,7,70,27,18,18,1,1,18,18,27,70,7,7,150,24,15,15,32, +9,9,14,64,14,9,9,48,1,15,15,1,1,15,15,1,254,112,1,15,15,1,1,15,15,1,232,2,22,22,2,2, +22,22,2,48,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2, +22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,0,0,0,0,4,255,255, +255,193,2,2,1,192,0,29,0,55,0,83,0,109,0,0,55,35,6,7,6,31,1,7,6,21,20,31,1,22,51,50, +63,1,23,22,51,50,55,54,55,53,52,39,38,35,55,51,54,55,54,47,1,55,54,53,52,47,1,38,35,34,15,1, +39,38,7,6,7,21,22,23,39,38,15,1,39,38,35,34,15,1,6,21,20,31,1,7,6,21,20,23,22,23,51,54, +55,53,54,39,19,55,54,39,38,39,35,6,7,21,22,23,22,63,1,23,22,51,50,63,1,54,53,52,47,1,200,136, +21,9,7,14,30,62,9,9,23,10,13,12,10,62,30,10,13,6,6,19,1,7,7,10,112,135,21,9,7,14,30,62, +9,9,23,10,13,12,10,62,30,16,19,18,1,2,22,108,19,16,30,62,10,12,13,11,23,9,9,63,30,9,2,9, +21,135,22,1,2,20,237,30,14,7,9,21,135,22,1,1,19,19,15,30,63,9,13,13,10,22,10,10,63,161,1,19, +19,16,30,62,10,12,13,10,23,9,9,62,30,9,2,9,21,136,10,7,7,63,1,19,19,16,30,62,10,12,13,10, +23,9,9,62,30,14,7,9,21,135,23,2,190,7,14,30,62,9,9,23,10,13,12,10,62,30,10,13,6,6,19,1, +2,21,137,21,9,254,173,30,16,19,20,1,2,21,135,21,9,7,14,30,62,9,9,23,10,12,13,10,59,0,0,0, +0,5,0,0,255,224,2,64,1,160,0,8,0,13,0,18,0,27,0,62,0,0,1,54,47,1,38,43,1,23,51,37, +35,7,51,53,51,35,21,51,39,5,51,55,35,6,15,1,6,23,5,35,55,33,23,35,6,7,21,22,23,51,23,21, +22,23,51,54,55,53,33,21,22,23,51,54,55,53,55,51,54,55,53,38,39,2,48,17,1,24,4,12,99,26,97,254, +224,100,26,126,133,101,126,25,254,123,97,26,99,12,3,24,2,17,2,32,20,4,254,0,4,20,15,1,1,15,28,20, +1,15,32,15,1,1,64,1,15,32,15,1,20,28,15,1,1,15,1,32,2,18,95,13,128,128,128,128,128,128,128,128, +1,11,95,19,2,64,32,32,1,15,32,15,1,160,16,15,1,1,15,16,16,15,1,1,15,16,160,1,15,32,15,1, +0,7,0,0,255,224,2,127,1,160,0,6,0,11,0,32,0,41,0,64,0,85,0,113,0,0,1,39,35,21,51,54, +55,39,35,7,51,53,23,22,23,54,63,1,23,22,23,22,49,48,53,50,47,1,38,39,35,31,1,5,51,55,35,6, +15,1,6,23,5,33,23,35,6,7,21,22,23,51,23,21,22,23,51,54,55,53,51,38,39,54,63,1,6,7,38,39, +6,7,6,7,22,23,22,23,54,55,54,55,52,39,38,39,7,6,35,38,39,38,39,52,55,54,55,22,23,22,23,22, +23,48,49,55,22,23,22,23,22,7,6,7,1,163,14,101,61,24,30,147,100,26,126,189,28,23,9,9,21,21,1,1, +1,1,1,24,3,12,99,12,12,254,67,97,26,99,12,3,24,2,17,1,69,254,203,4,20,15,1,1,15,28,20,1, +15,32,15,1,209,47,2,2,51,210,22,18,30,41,54,32,33,1,1,45,46,67,68,45,45,2,24,25,39,18,23,30, +38,25,25,1,13,12,25,3,16,16,15,15,2,39,2,1,3,2,14,6,6,24,1,88,72,127,28,27,72,128,128,72, +25,27,9,8,19,19,1,1,1,1,1,96,11,1,62,10,56,128,1,11,96,18,2,32,32,1,15,32,14,1,159,18, +15,1,2,13,15,52,75,58,73,29,20,21,39,37,49,53,53,39,67,45,44,2,2,44,45,67,30,46,46,37,230,16, +1,23,23,41,20,21,21,30,4,21,21,20,20,2,47,2,3,4,4,30,30,30,20,0,0,1,0,0,0,0,2,0, +1,128,0,44,0,0,37,21,6,7,35,53,35,21,35,53,35,21,35,53,35,21,35,53,35,21,35,38,39,53,54,55, +51,53,54,55,51,53,54,55,51,22,23,21,51,22,23,21,51,22,23,2,0,1,15,80,32,64,32,64,32,64,32,80, +15,1,1,15,48,1,15,48,1,15,224,15,1,48,15,1,48,15,1,240,224,15,1,128,128,128,128,128,128,128,128,1, +15,224,15,1,48,15,1,48,15,1,1,15,48,1,15,48,1,15,0,0,0,6,0,0,255,192,2,128,1,192,0,49, +0,86,0,97,0,109,0,118,0,127,0,0,19,55,54,23,22,15,1,51,22,23,6,7,6,7,6,29,1,20,23,35, +38,39,38,39,17,54,55,54,55,51,39,38,55,54,31,1,39,38,55,54,23,22,31,1,55,54,23,22,15,1,23,22, +31,1,55,54,55,22,23,22,23,20,7,51,22,23,22,23,21,35,53,35,21,35,53,54,55,54,55,51,38,53,54,55, +54,55,49,23,38,39,34,7,6,21,22,23,51,39,55,6,15,1,51,54,55,52,39,38,35,49,1,53,51,21,35,38, +39,38,39,23,53,51,21,6,7,6,7,35,193,25,19,14,12,17,28,22,26,14,36,4,21,13,14,9,153,20,14,13, +1,1,13,14,20,22,28,17,12,14,19,28,9,5,20,10,8,9,4,10,10,10,21,20,5,8,151,35,23,30,31,22, +35,30,21,20,1,4,4,20,14,13,1,192,32,192,1,13,14,20,4,4,1,20,21,30,20,8,12,10,7,7,2,22, +49,29,156,12,7,30,49,22,2,7,7,10,254,216,192,144,20,14,13,1,224,192,1,13,14,20,144,1,137,18,12,17, +19,14,20,2,21,28,47,6,17,17,23,224,18,14,1,13,14,20,1,64,20,14,13,1,21,14,19,17,12,20,25,22, +9,3,5,4,9,30,30,20,5,10,21,23,72,1,28,40,40,28,1,1,20,21,30,14,10,1,14,13,20,81,97,97, +81,20,13,14,1,10,14,30,21,20,1,59,10,1,8,7,9,23,1,37,11,1,10,37,1,23,9,7,8,254,223,80, +128,1,13,14,20,48,128,80,20,14,13,1,0,3,0,0,255,193,2,127,1,192,0,69,0,74,0,79,0,0,37,38, +39,49,38,15,1,39,54,55,54,47,1,38,15,1,39,38,15,1,6,23,22,23,7,39,38,7,6,7,6,31,1,22, +55,54,39,38,47,1,55,50,51,22,51,50,55,54,63,1,23,22,23,22,51,50,55,50,51,23,7,6,7,6,23,22, +63,1,54,39,1,39,55,23,7,51,39,55,23,7,2,127,6,15,15,16,22,39,37,10,10,22,87,14,25,114,115,25, +15,87,22,10,10,37,39,22,16,15,14,7,3,7,162,7,4,6,6,6,16,22,39,2,2,5,4,40,31,31,12,20, +20,11,32,31,40,4,5,2,2,39,22,16,6,6,6,4,7,162,6,2,254,149,112,36,95,19,88,19,95,36,112,14, +16,6,6,6,9,101,27,42,43,41,150,22,8,48,49,8,22,151,40,42,43,27,102,9,6,6,6,16,7,3,67,3, +7,16,14,15,7,9,104,1,22,23,40,75,75,40,22,23,1,104,9,7,14,15,16,7,3,67,3,7,1,16,46,64, +39,71,71,39,64,46,0,0,0,2,0,0,255,224,2,0,1,160,0,20,0,25,0,0,1,33,34,7,6,23,19,22, +23,22,51,33,50,55,54,55,19,54,39,38,35,7,33,39,33,7,1,223,254,65,15,9,9,1,56,4,18,17,25,1, +17,24,18,17,4,56,1,9,9,16,56,254,178,20,1,118,20,1,160,11,11,15,254,156,24,15,16,16,15,24,1,100, +15,11,11,192,128,128,0,0,0,4,0,0,255,192,2,0,1,192,0,26,0,118,0,153,0,165,0,0,37,6,7,49, +6,7,49,6,7,38,39,38,39,38,39,54,55,54,55,54,55,22,23,22,23,22,23,39,7,6,29,1,22,23,50,63, +1,54,59,1,22,23,20,15,1,6,15,1,6,7,20,15,1,6,29,1,20,23,22,51,54,63,1,54,51,50,31,1, +22,51,54,47,1,38,63,1,54,55,54,55,51,22,23,6,7,35,34,15,1,6,21,22,23,51,50,31,1,22,23,20, +7,20,15,1,6,21,20,31,1,22,59,1,54,53,38,39,38,39,49,19,38,35,34,47,1,38,35,34,47,1,38,39, +35,6,15,1,6,7,21,20,31,1,22,59,1,22,23,20,23,54,55,54,55,49,37,7,6,23,22,63,1,54,39,38, +7,49,2,0,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,246,33,9,1, +11,4,3,42,3,4,1,10,1,3,20,9,12,26,9,1,4,18,10,9,8,13,18,8,4,4,9,7,4,17,3,6, +14,4,1,5,12,21,12,1,2,17,29,15,1,1,15,21,11,8,5,3,1,10,12,9,7,6,2,1,2,1,7,6, +6,18,16,23,6,11,2,56,55,85,172,5,8,9,7,14,11,17,15,11,28,17,24,21,19,16,27,28,1,19,16,13, +19,21,22,2,1,54,43,43,25,254,239,32,10,10,11,11,32,10,10,11,11,192,72,57,58,34,34,1,1,34,34,58, +57,72,72,57,58,34,34,1,1,34,34,58,57,72,208,26,6,11,9,11,1,2,28,2,1,10,5,3,20,8,5,9, +3,10,6,4,18,10,14,4,13,8,9,1,15,8,8,6,22,4,3,13,3,12,6,7,4,13,17,2,1,15,15,1, +8,5,3,5,10,1,7,6,2,5,3,2,1,1,7,5,9,8,6,18,16,30,34,86,58,58,6,254,204,4,7,14, +11,10,23,15,1,1,11,18,20,33,4,26,19,16,13,2,22,4,3,5,28,29,45,255,32,11,11,10,10,32,11,11, +10,10,0,0,0,2,0,0,0,96,1,192,1,32,0,19,0,39,0,0,37,50,23,49,22,21,20,7,6,35,33,34, +39,38,53,52,55,54,51,33,53,50,23,49,22,21,20,7,6,35,33,34,39,38,53,52,55,54,51,33,1,160,14,9, +9,9,9,14,254,128,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9,14,1,128,160,9, +9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,0,2,0,0,255,224,0,192, +1,160,0,19,0,39,0,0,55,20,7,49,6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,51,20,7,49, +6,35,34,39,38,53,17,52,55,54,51,50,23,22,21,17,64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9, +14,14,9,9,9,9,14,14,9,9,0,14,9,9,9,9,14,1,128,14,9,9,9,9,14,254,128,14,9,9,9,9, +14,1,128,14,9,9,9,9,14,254,128,0,0,2,0,0,255,193,2,0,1,192,0,47,0,65,0,0,1,39,38,35, +34,15,1,6,15,2,38,39,38,7,6,7,6,7,6,7,6,23,22,23,22,23,22,55,54,55,54,55,54,55,54,39, +38,39,63,1,54,63,1,54,53,52,39,1,38,39,49,38,39,54,55,54,55,22,23,22,21,20,7,6,7,1,247,30, +10,13,12,10,46,6,3,12,76,19,22,52,37,14,7,11,31,36,26,34,5,5,42,43,52,51,37,24,4,5,30,19, +14,34,13,6,13,76,37,7,6,47,10,9,254,217,20,14,13,1,1,13,14,20,20,13,14,13,14,20,1,153,30,9, +9,47,6,8,36,76,13,6,12,34,14,20,29,5,3,26,36,51,52,44,41,5,5,33,27,36,31,11,6,15,37,52, +22,19,76,12,3,6,46,10,12,13,10,254,199,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0, +0,1,0,0,255,224,2,0,1,150,0,43,0,0,19,54,31,1,7,20,49,6,23,6,31,1,22,55,54,47,1,55, +54,47,1,54,23,22,23,22,23,21,6,15,1,6,35,34,47,1,38,39,53,54,55,54,55,49,119,36,32,51,76,3, +1,1,4,112,4,6,5,3,61,91,4,1,23,44,52,52,33,33,1,1,47,180,12,16,16,12,180,47,1,1,33,33, +52,1,148,6,11,78,75,1,1,4,4,2,104,4,4,4,6,98,76,4,5,63,26,8,10,39,38,54,6,65,44,169, +11,11,169,44,65,6,54,38,39,10,0,0,0,5,0,0,255,193,1,255,1,192,0,17,0,35,0,53,0,103,0,150, +0,0,1,22,23,49,22,51,50,55,54,53,52,39,38,39,6,7,6,15,1,50,55,49,54,53,52,39,38,39,6,7, +6,21,20,23,22,23,55,52,39,49,38,39,6,7,6,21,22,23,22,23,50,55,54,53,7,52,39,49,38,7,6,39, +34,7,6,23,22,23,22,7,6,7,6,35,34,7,6,23,22,7,6,23,22,55,54,23,50,55,54,39,38,39,38,55, +54,55,54,23,54,55,54,39,38,55,23,34,39,38,39,38,55,54,55,54,39,38,35,6,39,38,7,22,7,6,23,22, +7,22,23,22,23,22,7,6,7,6,23,22,51,54,23,22,55,54,39,38,55,54,39,38,35,1,31,1,13,13,20,21, +13,14,14,13,21,19,14,13,1,111,20,13,14,14,13,20,20,13,14,14,13,20,127,14,13,21,20,13,14,1,13,13, +20,21,13,14,59,7,8,9,61,62,8,5,4,2,7,3,2,8,7,13,25,25,8,5,4,2,18,6,1,9,9,11, +58,60,8,5,4,2,7,4,1,7,8,13,25,25,8,5,4,2,19,8,252,25,25,13,7,8,2,3,7,2,4,4, +9,62,60,11,8,3,2,6,17,5,6,19,18,13,8,7,1,3,8,2,4,5,8,60,58,11,9,9,1,6,18,2, +4,5,8,1,49,20,14,13,14,13,20,20,13,13,1,1,13,13,20,48,14,13,20,20,14,13,1,1,13,13,20,20, +14,13,1,144,20,13,13,1,1,13,13,20,20,14,14,1,14,14,21,196,10,6,5,4,26,1,6,6,7,23,25,12, +10,9,3,4,6,6,8,54,61,11,6,6,4,24,1,6,6,8,22,25,12,10,9,3,5,1,1,6,5,8,57,62, +113,4,3,9,10,12,25,23,7,6,6,1,26,4,7,8,10,55,50,15,15,1,3,3,9,10,12,25,22,8,6,6, +1,24,4,6,6,11,61,54,8,6,6,0,0,2,0,0,255,192,1,255,1,191,0,52,0,61,0,0,37,39,38,39, +38,39,54,55,54,39,38,15,1,6,7,6,23,21,20,23,22,59,1,54,55,54,47,1,53,38,39,38,39,38,63,1, +54,23,22,23,22,51,50,55,23,22,59,1,50,63,1,54,47,1,38,39,54,55,22,23,6,7,1,254,70,12,24,25, +32,15,13,14,8,3,9,202,97,36,36,2,9,9,14,236,19,8,9,7,41,35,27,27,15,3,4,12,8,5,12,23, +23,30,26,20,46,10,16,51,13,9,46,13,6,182,22,2,2,22,22,2,2,22,115,165,31,21,21,6,8,20,20,34, +9,3,75,36,83,83,121,81,14,9,9,1,14,14,17,82,1,3,18,19,29,6,4,12,5,8,25,16,16,13,64,13, +9,40,15,19,110,2,22,22,2,2,22,23,1,0,0,0,0,1,0,0,255,192,1,255,1,192,0,33,0,0,1,3, +6,35,34,39,3,7,6,35,34,47,1,7,6,35,34,47,1,7,6,35,34,39,3,38,55,54,55,33,22,23,22,7, +1,255,87,2,6,6,2,67,45,3,5,5,3,34,46,2,6,6,2,45,35,3,5,5,3,87,4,9,9,17,1,192, +15,10,9,3,1,154,254,45,7,7,1,107,172,6,6,133,197,6,6,187,124,5,5,1,18,16,12,12,1,1,11,11, +15,0,0,0,0,5,0,0,255,224,2,64,1,160,0,8,0,16,0,22,0,54,0,60,0,0,1,33,54,55,54,55, +50,23,21,55,22,23,49,22,23,35,53,5,21,35,54,55,51,23,35,53,33,21,35,21,51,21,6,7,6,7,35,53, +38,39,38,39,6,7,6,7,21,35,38,39,38,39,53,51,53,37,51,22,23,35,53,1,64,254,241,39,62,62,76,16, +16,32,55,45,45,31,176,255,0,96,1,29,66,96,64,1,64,64,192,1,13,14,20,176,1,18,18,27,27,18,18,1, +176,20,14,13,1,192,1,32,66,29,1,96,1,32,59,34,34,1,2,126,121,13,31,32,45,121,153,128,70,58,128,128, +128,32,80,20,14,13,1,128,27,18,18,1,1,18,18,27,128,1,13,14,20,80,32,128,58,70,128,0,0,2,0,0, +255,192,1,192,1,191,0,18,0,41,0,0,37,33,34,7,6,29,1,6,23,22,51,33,50,55,54,61,1,38,39,55, +38,7,49,6,15,1,39,38,39,38,7,6,7,6,31,1,33,55,54,39,38,39,1,95,254,225,14,8,9,1,9,9, +13,1,32,14,9,9,2,30,74,21,26,25,18,21,30,15,49,48,60,60,30,31,13,60,1,32,81,17,2,3,20,32, +9,9,13,31,15,9,10,9,9,13,31,32,2,209,17,2,3,20,25,128,59,31,30,12,15,49,48,60,208,86,22,26, +25,18,0,0,0,4,0,0,255,192,2,0,1,192,0,24,0,36,0,59,0,82,0,0,1,33,34,7,6,29,1,22, +23,22,23,51,54,55,54,55,51,54,55,54,55,38,39,38,39,21,35,53,51,22,23,22,23,6,7,6,7,37,22,23, +22,23,50,55,54,53,52,39,38,39,38,39,38,39,6,7,20,23,22,23,51,22,23,22,23,50,55,54,53,52,39,38, +39,38,39,38,39,6,7,20,23,22,23,1,144,254,144,14,9,9,1,27,27,41,192,41,27,27,1,16,48,31,32,1, +1,32,31,48,16,16,20,14,13,1,1,13,14,20,254,220,19,1,2,22,10,7,7,12,11,21,19,1,2,22,22,2, +12,11,21,112,19,1,2,22,10,7,7,12,11,21,19,1,2,22,22,2,12,11,21,1,0,9,9,14,192,41,27,27, +1,1,27,27,41,1,32,31,48,48,31,32,1,160,96,1,13,14,20,20,14,13,1,251,11,24,22,2,8,7,9,24, +20,21,12,12,23,22,2,2,22,24,20,21,12,11,24,22,2,8,7,9,24,20,21,12,12,23,22,2,2,22,24,20, +21,12,0,0,0,4,0,9,255,200,1,246,1,132,0,17,0,32,0,48,0,67,0,0,37,50,55,49,54,55,38,39, +38,39,6,7,6,7,22,23,22,51,47,1,38,39,38,7,6,7,6,23,22,23,51,54,63,1,38,7,49,6,15,1, +22,23,51,54,55,54,39,38,39,3,6,7,38,39,7,6,23,22,23,22,51,50,55,54,55,54,47,1,1,0,20,14, +13,1,1,13,14,20,20,14,13,1,1,13,14,20,42,71,9,13,14,12,69,16,2,10,9,15,134,2,36,203,12,14, +13,9,71,36,2,134,15,9,10,2,16,69,119,18,24,24,18,71,8,4,4,13,46,54,54,46,13,4,4,8,71,145, +14,14,20,20,14,13,1,1,14,13,20,20,14,14,115,113,13,2,2,9,59,94,14,11,10,1,45,23,121,9,2,2, +13,113,23,45,1,10,11,14,94,59,254,255,11,1,1,11,113,13,13,13,7,21,21,7,13,13,13,113,0,6,0,16, +255,208,1,240,1,176,0,10,0,28,0,43,0,54,0,81,0,99,0,0,55,39,38,7,6,7,20,23,51,54,55,23, +50,55,49,54,53,52,39,38,35,34,7,6,21,20,23,22,51,23,6,35,34,39,7,6,23,22,51,50,55,54,47,1, +55,38,15,1,22,23,51,54,53,38,47,1,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55, +38,39,38,39,38,39,17,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,226,41,10,14,47,9,16,79, +1,25,30,14,9,9,9,9,14,14,9,9,9,9,14,30,14,16,17,13,41,7,14,29,35,35,29,14,7,41,65,13, +11,41,25,1,79,16,9,47,95,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,1,32,32,54,54, +67,75,49,50,2,2,49,50,75,75,50,49,2,2,50,49,75,239,67,13,9,38,61,17,2,31,16,79,9,9,14,14, +9,9,9,9,14,14,9,9,15,9,9,67,15,8,15,15,8,15,67,165,9,13,67,16,31,2,17,61,38,122,1,32, +32,54,54,67,67,54,54,32,32,1,1,32,32,54,54,67,67,54,54,32,32,1,254,96,2,50,49,75,75,49,50,2, +2,50,49,75,75,49,50,2,0,5,0,0,255,192,2,127,1,192,0,12,0,60,0,78,0,96,0,145,0,0,1,6, +7,17,22,23,50,55,54,53,17,38,39,7,38,39,49,38,43,1,34,7,6,15,1,6,23,22,23,22,55,21,20,23, +22,51,50,55,54,61,1,51,21,20,23,22,51,50,55,54,61,1,22,51,50,55,54,55,54,47,2,54,55,49,54,53, +52,39,38,39,6,7,6,7,22,23,22,23,33,54,55,49,54,53,52,39,38,39,6,7,6,21,22,23,22,31,1,39, +38,39,38,43,1,34,7,6,15,1,6,23,22,23,22,51,7,51,21,20,23,22,51,50,55,54,61,1,51,21,22,23, +22,51,50,55,54,61,1,51,39,50,55,54,55,54,39,1,63,21,2,2,21,10,7,7,1,23,105,7,17,16,21,50, +21,16,17,7,40,4,5,6,13,20,14,9,9,14,14,8,9,16,9,10,13,14,8,9,10,14,5,5,13,6,6,4, +39,86,20,13,14,14,13,20,20,14,13,1,1,13,14,20,1,127,20,14,14,14,13,21,21,13,13,1,13,13,20,127, +40,7,17,16,21,50,21,16,17,7,40,4,5,6,13,5,5,17,40,9,9,13,13,9,10,16,1,8,9,13,13,10, +9,39,16,5,6,15,6,6,4,1,192,2,22,254,48,22,2,7,7,10,1,208,22,2,172,20,12,12,12,12,20,122, +13,11,12,4,6,15,155,14,9,9,9,9,14,144,144,14,9,9,9,9,14,155,11,2,4,12,11,13,122,76,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,198,122, +20,12,12,12,12,20,122,13,11,12,4,2,48,96,14,9,9,9,9,14,96,96,14,9,9,9,9,14,96,48,2,4, +12,11,13,0,0,3,0,0,255,192,2,0,1,192,0,71,0,76,0,81,0,0,37,39,55,54,53,52,47,1,38,35, +34,15,1,39,38,35,34,15,1,6,21,20,31,1,7,38,7,6,7,6,31,1,7,34,49,38,35,34,7,6,7,22, +23,22,23,54,55,54,53,52,39,48,53,55,23,22,55,54,55,54,39,55,23,22,51,50,63,1,54,53,52,39,37,39, +55,23,7,23,39,55,23,7,1,247,81,48,10,10,47,11,13,13,11,48,80,9,13,14,9,97,9,9,81,10,41,44, +44,40,13,10,108,18,1,3,4,13,9,9,1,1,9,9,13,14,9,9,1,18,107,13,10,21,2,1,18,10,80,10, +12,13,9,97,10,9,254,229,69,73,69,73,164,69,73,69,73,184,80,48,10,14,13,11,47,10,10,48,80,9,9,97, +10,13,12,10,81,9,18,1,2,21,10,13,108,17,1,9,9,14,13,9,9,1,1,9,9,13,4,3,1,18,108,10, +13,40,44,44,41,10,81,9,9,97,10,12,14,10,67,68,74,69,73,164,68,74,68,74,0,3,0,0,255,192,2,0, +1,192,0,16,0,46,0,87,0,0,19,6,7,22,23,22,23,22,23,22,23,54,55,38,39,38,39,55,34,7,49,6, +21,20,23,22,51,22,23,22,23,22,23,20,23,22,51,50,55,54,53,38,39,38,39,38,39,3,55,50,51,22,51,50, +55,54,53,52,39,38,35,34,7,6,21,20,23,22,49,7,39,38,7,6,7,6,23,22,23,22,23,22,55,54,55,54, +47,1,216,22,2,2,22,61,41,40,2,2,22,22,2,2,54,55,81,8,14,9,9,9,9,14,62,51,50,30,30,1, +9,9,14,14,9,9,1,38,39,65,65,80,35,27,1,1,3,3,14,9,9,9,9,14,13,10,9,1,1,28,117,6, +7,7,4,31,9,9,49,51,66,65,60,7,1,1,6,117,1,88,2,22,22,2,2,40,41,61,22,2,2,22,81,55, +54,2,104,9,9,14,14,9,9,1,30,30,50,51,62,14,9,9,9,9,14,80,65,65,39,38,1,254,166,27,1,9, +9,14,13,9,10,10,9,13,4,3,1,27,116,6,1,1,7,60,65,66,51,49,9,9,31,5,7,7,6,117,0,0, +0,4,0,0,255,192,1,128,1,192,0,17,0,22,0,27,0,32,0,0,1,35,7,17,22,23,22,23,33,54,55,54, +55,17,38,39,38,39,7,35,53,51,21,51,35,53,51,21,51,35,53,51,21,1,64,192,128,1,18,18,27,1,0,27, +18,18,1,1,18,18,27,160,48,48,80,48,48,80,48,48,1,192,128,254,192,27,18,18,1,1,18,18,27,1,128,27, +18,18,1,160,96,96,96,96,96,96,0,0,0,8,0,0,255,192,1,128,1,192,0,17,0,22,0,31,0,40,0,45, +0,54,0,59,0,69,0,0,19,17,22,23,22,23,33,54,55,54,55,17,39,35,6,7,6,7,23,35,53,51,21,51, +35,53,51,50,23,22,29,1,7,51,21,20,7,6,43,1,53,35,51,21,35,53,35,51,21,35,34,39,38,61,2,33, +21,33,61,1,52,55,49,54,59,1,21,35,53,0,1,18,18,27,1,0,27,18,18,1,128,192,27,18,18,1,224,64, +64,96,64,32,14,9,9,64,64,9,9,14,32,96,64,64,96,64,32,14,9,9,1,0,255,0,9,9,14,32,64,1, +128,254,128,27,18,18,1,1,18,18,27,1,64,128,1,18,18,27,192,64,64,64,9,9,14,32,128,32,14,9,9,64, +64,64,64,9,9,14,32,96,64,64,64,14,9,9,64,32,0,5,0,0,255,192,1,192,1,192,0,17,0,34,0,62, +0,76,0,119,0,0,1,6,7,49,6,7,22,23,22,23,54,55,54,53,52,39,38,39,17,6,7,6,7,35,6,7, +22,23,51,54,55,54,53,38,39,5,34,7,49,6,35,34,47,1,38,35,34,7,6,21,20,31,1,22,51,50,55,54, +55,52,39,38,35,55,7,6,21,22,23,22,51,50,63,1,39,38,47,1,51,7,6,7,6,23,20,31,1,21,20,23, +22,51,50,55,54,61,1,52,47,1,52,51,48,51,55,54,55,38,39,38,43,1,34,7,6,21,20,23,22,51,1,143, +20,14,13,1,1,13,14,20,21,14,14,14,14,21,14,2,1,15,96,14,2,2,14,96,20,14,14,1,15,254,242,8, +3,4,8,6,5,68,5,6,6,5,5,5,68,14,20,11,13,13,1,6,5,5,45,94,9,1,11,12,8,13,9,92, +30,7,6,47,106,20,15,4,4,1,19,78,9,9,14,14,9,9,14,61,1,1,82,11,1,1,11,11,17,206,13,9, +9,9,9,13,1,192,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,64,1,15,15,1,1,15,15,1, +1,13,14,20,15,1,4,5,4,4,68,5,5,5,6,6,5,68,14,6,7,12,8,4,4,175,94,9,13,18,7,7, +9,92,30,8,9,117,17,15,14,14,6,26,19,78,83,14,9,9,9,9,14,89,20,14,61,1,83,12,16,17,11,12, +9,9,14,14,9,9,0,0,0,3,0,0,255,192,1,255,1,192,0,17,0,54,0,102,0,0,1,50,55,49,54,53, +52,39,38,39,6,7,6,7,22,23,22,51,19,38,39,6,7,6,7,34,47,1,55,54,53,52,47,2,6,21,22,31, +1,7,39,38,35,6,7,20,23,5,22,51,54,55,54,55,1,7,22,51,50,55,23,34,49,48,49,23,55,23,22,31, +1,22,51,50,55,54,53,52,47,2,38,39,38,39,34,15,1,39,48,53,52,39,7,39,48,35,6,7,20,31,1,1, +176,20,14,14,14,14,20,20,14,13,1,1,13,14,20,79,2,22,12,6,8,20,8,8,136,50,8,14,41,106,1,1, +18,75,46,198,5,6,23,1,13,1,136,18,19,29,20,19,1,254,120,10,8,9,14,11,48,1,115,32,7,6,18,58, +7,7,14,9,9,18,52,17,5,16,15,24,11,13,82,62,21,11,35,1,4,1,2,25,1,96,14,14,20,20,14,13, +1,1,13,14,20,20,14,14,254,139,22,2,1,7,10,1,3,70,74,13,14,19,15,40,53,4,5,26,19,75,69,102, +3,3,21,14,7,203,8,1,14,14,14,1,121,22,4,9,24,57,13,19,19,9,28,3,10,9,13,19,9,27,51,15, +13,14,1,5,32,31,1,22,12,21,7,1,5,2,2,23,0,4,0,0,255,192,2,64,1,192,0,17,0,61,0,85, +0,99,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,19,6,7,6,7,35,55,54,55,52, +39,38,43,1,39,38,47,1,38,35,34,15,1,6,7,22,23,22,23,48,49,3,35,6,7,22,23,33,54,55,54,55, +38,39,5,35,55,39,38,39,7,39,19,54,63,1,54,51,50,51,23,7,6,21,20,31,1,7,51,35,55,54,53,38, +47,1,55,23,22,23,51,7,1,80,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,216,22,2,2,22,69, +25,19,1,9,9,14,44,26,21,41,71,11,12,32,26,39,13,1,1,3,4,1,53,43,22,2,2,22,1,224,31,20, +20,1,2,22,254,252,97,43,22,18,12,62,24,52,6,5,40,9,11,3,3,14,37,5,31,85,25,110,43,23,2,1, +22,62,32,20,14,29,33,25,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,192,2,22,22,2, +178,9,21,14,9,9,53,40,11,21,3,20,30,10,16,10,5,5,1,254,241,2,22,22,2,1,20,20,31,22,2,48, +91,12,11,17,132,1,1,5,2,4,30,7,5,87,13,12,36,20,50,81,76,6,7,26,15,36,78,41,26,1,176,0, +0,2,0,0,255,224,2,128,1,160,0,55,0,83,0,0,19,50,23,22,23,22,31,1,22,23,22,51,54,55,54,55, +53,52,55,54,59,1,50,23,22,21,20,7,6,35,21,6,7,6,7,21,35,53,35,21,35,53,38,39,38,39,53,34, +39,38,53,52,55,54,59,1,1,6,7,49,6,7,33,34,39,38,39,54,55,54,51,33,54,55,53,52,55,54,51,50, +23,22,29,1,63,5,3,40,35,35,22,5,30,49,49,57,24,15,15,1,9,9,14,64,14,9,9,9,9,14,1,27, +27,41,64,192,64,41,27,27,1,14,9,9,9,9,14,31,2,65,1,25,25,37,254,23,13,9,9,1,1,9,9,13, +1,233,22,2,9,9,14,14,9,9,1,160,1,4,21,21,35,7,49,27,27,1,15,15,24,41,14,9,9,9,9,14, +14,9,9,96,41,27,27,1,32,32,32,32,1,27,27,41,160,9,9,14,14,9,9,254,152,37,25,25,1,9,9,14, +14,9,9,2,22,8,14,9,9,9,9,14,8,0,0,0,0,4,0,0,255,224,2,0,1,160,0,36,0,85,0,114, +0,163,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22,51,54,55,54, +55,54,55,38,39,38,39,38,39,7,6,7,34,39,38,39,38,55,54,23,50,23,22,23,22,55,38,39,34,39,38,39, +38,55,54,55,54,23,22,23,22,7,6,39,38,39,38,7,22,23,50,23,48,51,22,23,22,7,23,6,7,38,39,53, +7,6,35,34,47,1,21,6,7,38,39,53,54,55,54,31,1,55,54,23,22,23,21,55,6,7,34,39,38,39,38,55, +54,23,50,23,22,23,22,55,38,39,34,39,38,39,38,55,54,55,54,23,22,23,22,7,6,39,38,39,38,7,22,23, +50,23,48,51,22,23,22,7,1,0,72,57,58,34,34,1,2,55,12,20,20,3,3,2,1,6,50,36,36,19,49,58, +72,57,58,34,34,1,1,34,34,58,57,72,89,6,40,6,6,12,11,15,3,6,13,2,1,10,8,19,3,1,19,2, +3,11,15,15,3,3,16,15,24,9,9,14,4,6,14,7,6,19,3,1,16,2,1,1,14,16,15,3,153,1,15,15, +1,19,5,8,8,5,19,1,15,15,1,1,10,11,7,35,35,7,11,10,1,119,6,40,6,6,13,11,14,3,5,14, +1,1,10,8,19,3,1,19,2,3,11,15,15,3,3,16,15,24,9,9,14,4,6,14,7,6,19,3,2,16,2,1, +1,14,16,15,3,1,160,1,27,28,47,47,58,76,55,39,27,28,2,3,5,5,1,17,17,16,19,1,27,28,47,47, +58,58,47,47,28,27,1,240,30,2,1,2,5,6,15,14,4,1,4,1,3,8,7,4,1,2,10,10,24,18,8,8, +3,2,3,6,14,14,4,2,1,3,8,6,4,1,3,10,10,24,16,15,1,1,15,48,26,6,6,26,48,15,1,1, +15,96,10,5,3,8,47,47,8,3,4,11,96,16,30,2,1,2,5,6,15,13,3,1,4,1,3,8,7,4,1,2, +10,10,24,18,8,8,3,2,3,6,14,14,4,2,1,3,8,6,4,1,3,10,10,24,0,3,0,0,255,192,2,0, +1,192,0,75,0,91,0,109,0,0,37,22,51,50,55,54,55,52,47,1,38,47,2,38,39,34,7,6,21,20,31,1, +22,31,1,7,6,7,21,7,6,7,22,23,39,38,39,38,39,6,7,6,21,20,23,22,23,5,22,51,50,55,54,53, +38,39,38,35,34,7,6,35,34,47,1,54,63,1,54,53,52,47,1,55,23,15,1,6,21,20,23,39,48,51,54,63, +1,54,55,53,23,55,54,55,49,54,55,38,39,38,39,6,7,6,21,20,23,22,23,1,205,9,10,9,11,11,1,13, +111,21,25,63,27,9,19,14,9,9,3,29,9,19,16,41,34,1,74,21,1,2,8,38,17,5,5,17,14,5,5,12, +11,28,1,108,16,15,19,17,14,1,8,9,6,5,5,8,8,7,7,90,13,4,22,1,19,52,66,84,145,19,1,3, +169,1,3,4,85,31,2,60,116,20,14,13,1,1,13,14,20,20,14,14,14,14,20,198,6,7,8,17,15,11,83,16, +8,21,52,17,1,10,9,13,7,7,58,18,6,6,21,18,39,53,25,8,22,17,6,14,8,12,13,1,1,8,9,6, +8,18,17,12,133,5,8,7,15,14,5,5,2,4,2,33,7,15,101,5,5,24,15,39,30,62,51,92,3,3,8,6, +61,1,1,28,12,33,21,45,205,1,13,13,20,20,14,14,1,1,13,13,20,20,14,14,1,0,0,0,0,7,0,0, +255,192,1,255,1,192,0,71,0,80,0,89,0,98,0,107,0,123,0,132,0,0,1,39,38,15,1,53,38,39,35,6, +7,21,48,49,20,49,7,38,39,54,53,38,39,38,39,6,7,6,7,20,23,6,7,39,48,53,48,49,53,38,39,35, +6,7,21,39,38,15,1,6,31,1,22,23,6,7,20,23,22,23,51,54,55,54,53,38,39,54,53,55,54,39,37,38, +39,54,55,22,23,6,7,19,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23,6,7,53,38,39,54,55,22,23, +6,7,53,38,39,49,38,39,54,55,22,23,6,7,6,7,48,49,55,38,39,54,55,22,23,20,7,1,255,6,7,14, +28,2,15,16,14,2,49,8,14,15,1,27,27,41,41,27,26,1,15,14,8,49,1,15,16,15,1,28,14,7,6,4, +13,134,1,7,54,2,18,17,30,190,30,17,18,3,53,7,135,13,4,254,225,14,1,2,13,13,2,1,14,32,14,1, +1,14,14,1,1,14,14,1,1,14,14,1,1,14,14,1,1,14,14,1,1,14,1,7,6,1,1,14,14,1,1,6, +7,1,31,14,1,2,13,14,1,15,1,40,14,13,4,12,29,15,1,1,15,47,1,21,19,15,22,29,41,27,27,1, +1,27,27,40,29,22,16,19,21,1,47,15,1,1,15,29,12,4,13,14,14,7,55,19,17,46,74,40,33,33,22,22, +33,33,40,74,46,17,19,55,7,14,57,2,13,13,2,2,13,13,2,254,240,2,13,14,3,2,13,15,2,64,2,13, +14,3,2,13,15,2,64,2,13,14,3,2,13,15,2,87,1,12,11,8,15,1,1,15,8,11,12,1,57,2,13,13, +2,2,13,13,2,0,0,0,0,7,0,0,255,192,2,128,1,192,0,8,0,17,0,26,0,35,0,101,0,107,0,126, +0,0,55,6,7,38,39,54,55,22,23,51,54,55,22,23,6,7,38,39,35,6,7,38,39,54,55,22,23,35,54,55, +22,23,6,7,38,39,37,22,29,1,51,53,52,63,1,54,55,54,23,22,23,22,15,1,21,23,22,21,20,7,6,35, +34,47,1,38,61,1,35,22,21,6,7,6,7,33,38,39,38,39,52,55,54,55,53,52,55,54,59,1,53,54,55,54, +55,51,22,31,1,22,21,49,39,35,21,23,51,39,19,33,6,7,6,7,22,23,22,23,33,54,55,54,55,38,39,38, +39,144,2,22,22,2,2,22,22,2,192,2,22,22,2,2,22,22,2,32,2,22,22,2,2,22,22,2,128,2,22,22, +2,2,22,22,2,1,15,1,64,14,57,9,12,13,10,11,2,1,9,56,55,9,9,10,13,13,10,54,19,43,11,1, +32,31,48,255,0,48,31,32,1,18,17,29,9,9,14,32,1,13,14,20,123,41,18,87,2,148,107,64,112,69,69,255, +0,20,14,13,1,1,13,14,20,1,0,20,14,13,1,1,13,14,20,48,22,2,2,22,22,2,2,22,22,2,2,22, +22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,22,2,2,22,150,3,4,31,53,22,18,71,10,2,2,9, +9,12,13,10,72,168,54,10,13,13,10,9,9,55,20,25,51,22,26,48,31,32,1,1,32,31,48,34,27,26,14,107, +14,9,9,112,20,14,13,1,2,37,204,3,4,186,96,64,160,254,224,1,13,14,20,20,14,13,1,1,13,14,20,20, +14,13,1,0,0,2,0,0,255,224,1,128,1,160,0,19,0,50,0,0,19,52,55,49,54,51,33,50,23,22,21,20, +7,6,35,33,34,39,38,53,21,52,55,49,54,51,33,50,23,22,21,20,7,6,43,1,21,20,7,6,35,34,39,38, +61,1,35,34,39,38,53,0,9,9,14,1,64,14,9,9,9,9,14,254,192,14,9,9,9,9,14,1,64,14,9,9, +9,9,14,128,9,9,14,14,9,9,128,14,9,9,1,128,14,9,9,9,9,14,14,9,9,9,9,14,128,14,9,9, +9,9,14,14,9,9,224,14,9,9,9,9,14,224,9,9,14,0,0,0,0,3,0,0,255,192,1,192,1,192,0,38, +0,51,0,69,0,0,1,54,55,53,38,39,33,6,7,21,22,23,51,21,6,7,20,23,22,23,7,6,23,22,23,33, +54,55,54,47,1,54,55,54,53,38,39,53,51,5,54,55,51,22,23,21,6,7,35,38,39,53,23,34,39,49,38,39, +54,55,54,51,50,23,22,23,6,7,6,35,1,176,15,1,1,15,254,96,15,1,1,15,16,31,1,23,22,39,19,4, +9,9,17,1,0,17,9,9,4,20,39,23,23,1,31,16,254,176,1,7,48,7,1,1,7,48,7,1,128,68,45,45, +2,2,45,45,68,68,45,45,2,2,45,45,68,1,144,1,15,16,15,1,1,15,16,15,1,159,21,28,46,39,39,26, +65,16,12,12,1,1,12,12,16,65,26,39,39,46,27,22,159,24,7,1,1,7,16,7,1,1,7,16,216,9,9,14, +14,9,9,9,9,14,14,9,9,0,0,0,0,4,0,0,255,192,2,0,1,192,0,32,0,60,0,74,0,83,0,0, +37,22,31,1,54,55,54,55,54,39,38,39,38,15,1,35,53,55,54,39,38,39,38,7,6,7,6,7,6,21,23,54, +51,23,38,39,49,38,7,39,53,39,7,23,51,23,6,23,22,31,1,22,51,50,63,1,54,53,52,47,1,7,39,7, +6,21,20,23,22,51,50,63,1,38,55,7,38,39,54,55,22,23,6,7,1,76,43,32,19,31,21,22,8,8,8,2, +8,8,6,69,76,69,6,2,2,8,33,36,42,29,29,7,2,83,12,13,52,18,23,23,21,108,127,64,96,62,107,11, +4,3,18,117,11,15,15,11,53,11,11,117,156,59,149,20,20,21,27,26,21,119,13,7,164,22,2,2,22,22,2,2, +22,224,1,30,20,14,25,25,33,36,32,9,2,2,6,69,75,69,6,8,8,2,8,8,11,31,32,43,12,12,83,4, +55,18,3,4,11,107,62,96,63,127,107,21,23,23,18,117,11,11,52,12,15,15,11,115,28,59,149,21,27,26,21,20, +20,119,32,34,165,2,22,22,2,2,22,22,2,0,0,0,0,6,0,0,255,192,2,0,1,192,0,17,0,35,0,71, +0,84,0,97,0,110,0,0,1,52,55,49,54,51,50,23,22,21,20,7,6,35,34,39,38,53,7,20,7,49,6,35, +34,39,38,53,52,55,54,51,50,23,22,21,7,54,55,49,54,55,51,53,7,6,39,38,55,37,54,23,22,15,1,21, +51,22,23,22,23,21,6,7,6,7,33,38,39,38,39,53,51,6,7,21,22,23,51,54,55,53,38,39,35,23,22,23, +51,54,55,53,38,39,35,6,7,21,55,6,7,21,22,23,51,54,55,53,38,39,35,1,0,9,9,14,14,9,9,9, +9,14,14,9,9,32,9,9,14,14,9,9,9,9,14,14,9,9,192,1,18,18,27,136,203,22,7,2,21,1,208,22, +7,2,21,213,136,27,18,18,1,1,18,18,27,254,192,27,18,18,1,64,15,1,1,15,64,15,1,1,15,64,112,1, +15,64,15,1,1,15,64,15,1,144,15,1,1,15,64,15,1,1,15,64,1,160,14,9,9,9,9,14,14,9,9,9, +9,14,24,14,9,9,9,9,14,14,9,9,9,9,14,232,27,18,18,1,66,42,2,21,22,6,96,3,21,22,7,44, +76,1,18,18,27,160,27,18,18,1,1,18,18,27,160,1,15,64,15,1,1,15,64,15,1,80,15,1,1,15,64,15, +1,1,15,64,80,1,15,64,15,1,1,15,64,15,1,0,0,1,0,0,255,192,1,128,1,192,0,48,0,0,37,6, +7,49,6,7,38,39,38,39,54,55,54,55,54,23,22,23,21,22,23,22,23,50,55,54,55,38,39,38,39,38,39,38, +55,54,55,54,23,22,23,22,23,22,23,22,23,22,23,1,128,2,54,55,81,81,55,54,2,1,16,17,21,12,14,14, +1,1,17,18,27,28,18,18,1,1,13,13,17,22,17,16,4,4,39,11,16,16,1,1,19,20,28,37,31,30,2,129, +82,55,54,2,2,54,55,81,44,35,34,21,12,5,6,17,85,27,18,19,1,18,19,27,23,17,18,16,20,25,25,37, +38,58,15,5,5,18,33,26,25,24,31,43,43,70,0,0,0,2,0,0,255,192,2,63,1,191,0,22,0,47,0,0, +55,39,38,55,54,63,1,54,63,1,54,63,1,54,31,1,7,6,15,1,6,15,1,1,39,7,6,15,1,6,15,1, +23,22,51,50,63,1,54,63,1,54,63,1,54,55,54,39,29,18,14,4,5,18,69,73,42,20,45,78,92,25,19,34, +105,85,48,22,43,75,114,2,24,22,113,76,43,22,48,85,104,37,11,18,7,8,93,77,45,20,42,73,69,18,5,3, +13,15,21,17,22,22,9,31,35,75,38,80,37,43,9,19,38,48,40,87,41,77,36,53,1,77,24,52,36,78,40,87, +40,48,42,13,3,43,37,80,38,75,35,31,9,22,23,16,0,3,0,0,255,192,1,192,1,192,0,25,0,54,0,66, +0,0,37,17,38,39,38,39,33,6,7,6,7,17,22,23,22,23,33,50,55,54,53,38,39,53,54,55,37,54,55,51, +53,54,55,51,22,23,21,51,22,23,21,6,7,35,21,6,7,35,38,39,53,35,38,39,53,1,33,34,39,38,53,52, +55,54,51,33,21,1,192,1,13,14,20,254,208,41,27,27,1,1,27,27,41,1,64,14,9,9,1,15,15,1,254,192, +1,15,53,1,15,52,15,1,55,15,1,1,15,54,1,15,52,15,1,54,15,1,1,0,254,224,14,9,9,9,9,14, +1,32,112,1,32,20,14,13,1,1,27,27,41,254,192,41,27,27,1,9,9,13,18,9,82,14,22,170,15,1,54,15, +1,1,15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,254,230,9,9,14,14,9,9,64,0,0,1,0,0, +255,224,2,0,1,160,0,30,0,0,1,20,7,49,6,43,1,21,20,7,6,35,33,34,39,38,61,1,35,34,39,38, +53,54,55,54,55,22,23,22,23,2,0,15,15,27,7,9,9,14,254,192,14,9,9,7,27,15,15,1,67,67,121,121, +67,67,1,1,16,21,13,14,224,14,9,9,9,9,14,224,14,13,21,51,45,45,3,3,45,45,51,0,0,2,0,0, +255,224,2,0,1,160,0,12,0,21,0,0,55,21,20,23,22,51,33,50,55,54,61,1,33,1,34,7,5,33,38,39, +38,39,0,9,9,14,1,192,14,9,9,254,0,1,44,12,9,254,233,2,0,2,60,60,90,160,159,14,9,10,9,9, +13,161,1,0,6,217,91,63,62,7,0,0,0,2,0,0,255,192,2,64,1,192,0,43,0,72,0,0,37,23,6,7, +6,7,33,38,39,38,39,53,35,38,39,38,53,52,55,37,54,23,50,31,1,53,52,55,54,59,1,50,23,22,29,1, +23,22,7,6,7,6,7,35,39,38,39,35,53,38,39,35,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55, +53,51,54,55,53,2,0,1,1,18,18,27,254,191,27,18,18,1,32,14,9,9,10,1,0,11,11,12,10,106,9,9, +14,32,14,9,9,53,12,1,1,9,9,13,32,112,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48,15, +1,56,15,1,160,160,27,18,18,1,1,18,18,27,160,1,9,9,13,14,10,224,9,1,7,94,37,14,9,9,9,9, +14,121,47,10,14,13,9,9,1,40,15,1,56,15,1,1,15,56,1,15,48,15,1,56,15,1,1,15,56,1,15,48, +0,4,0,0,255,192,1,128,1,192,0,29,0,47,0,65,0,80,0,0,1,35,38,39,38,39,6,7,6,7,35,6, +7,6,7,17,22,23,22,23,33,54,55,54,55,17,38,39,38,39,35,50,23,49,22,21,20,7,6,35,34,39,38,53, +52,55,54,51,21,22,23,49,22,23,6,7,6,7,38,39,38,39,54,55,54,55,19,35,38,39,54,55,54,55,51,22, +23,22,23,6,7,1,80,54,10,24,24,32,32,24,24,10,54,20,14,13,1,1,13,14,20,1,32,20,14,13,1,1, +13,14,20,144,14,9,9,9,9,14,14,9,9,9,9,14,27,18,18,1,1,18,18,27,27,18,18,1,1,18,18,27, +96,192,15,1,1,22,23,34,64,34,23,22,1,1,15,1,128,28,18,17,1,1,17,18,28,1,13,14,20,254,160,20, +14,13,1,1,13,14,20,1,96,20,14,13,1,9,9,14,14,9,9,9,9,14,14,9,9,128,1,18,18,27,27,18, +18,1,1,18,18,27,27,18,18,1,255,0,1,15,34,23,22,1,1,22,23,34,15,1,0,2,0,0,255,224,2,0, +1,161,0,36,0,65,0,0,1,6,7,49,6,7,49,6,7,22,23,6,7,6,7,6,23,22,51,54,55,54,55,22, +51,54,55,54,55,54,55,38,39,38,39,38,39,23,6,7,35,21,6,7,35,38,39,53,35,38,39,53,54,55,51,53, +54,55,51,22,23,21,51,22,23,21,1,0,71,58,57,34,34,1,2,55,12,20,20,3,4,2,2,5,50,36,36,19, +49,58,72,57,58,34,34,1,1,34,34,58,57,72,112,1,15,54,1,15,52,15,1,54,15,1,1,15,53,1,15,52, +15,1,55,15,1,1,161,1,27,28,47,47,58,75,56,39,27,28,2,5,4,5,1,17,17,16,19,1,28,28,46,47, +59,58,47,47,28,27,1,235,15,1,54,15,1,1,15,54,1,15,52,15,1,54,15,1,1,15,54,1,15,52,0,0, +0,3,0,0,255,192,2,0,1,193,0,18,0,39,0,49,0,0,1,39,38,35,34,7,6,21,20,31,1,22,51,50, +55,54,53,52,39,7,39,55,39,7,6,15,2,6,31,1,22,63,2,54,63,1,39,15,1,6,15,1,55,54,63,1, +23,7,1,247,160,10,13,13,9,10,9,160,10,13,13,10,9,9,169,67,55,46,109,19,7,28,108,10,10,22,12,11, +109,120,27,19,110,45,56,54,7,9,79,18,3,6,9,68,9,1,24,159,10,9,10,13,13,10,160,9,9,10,13,12, +11,77,67,56,45,110,19,27,120,109,11,12,22,10,10,108,28,7,19,109,46,55,55,6,3,18,79,9,7,9,68,9, +0,4,0,0,255,224,2,0,1,159,0,40,0,58,0,76,0,85,0,0,37,39,38,47,1,38,39,38,15,1,6,47, +1,38,7,6,31,1,22,15,1,6,23,22,63,1,54,31,1,22,55,54,63,1,54,63,1,54,39,38,39,5,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39,49,38,53,52,55,54,51,50,23,22,21,22,7,6, +35,55,38,39,54,55,22,23,22,7,1,216,66,30,8,16,11,36,35,28,48,21,33,71,41,19,19,20,38,17,12,28, +14,24,23,40,69,32,25,55,32,33,34,5,5,3,27,61,35,2,3,37,254,199,13,9,9,9,9,13,13,9,9,8, +9,14,128,13,9,9,9,9,13,13,9,9,1,9,9,14,16,14,1,2,13,14,1,1,16,252,22,11,27,61,33,8, +7,25,47,21,1,6,1,27,26,31,52,24,26,57,33,24,24,7,15,6,18,40,22,12,12,35,62,28,15,31,20,31, +31,15,60,9,9,13,13,9,9,9,9,13,13,9,9,95,9,9,13,14,8,9,9,9,13,13,9,9,127,2,13,14, +1,1,14,13,2,0,0,0,0,2,0,0,255,208,1,128,1,176,0,22,0,40,0,0,19,6,7,49,6,7,49,6, +7,22,23,22,23,54,55,54,55,38,39,38,39,38,39,7,6,7,49,6,7,6,7,38,39,54,55,54,55,54,23,22, +7,192,54,43,43,26,25,1,2,54,54,82,81,54,55,2,1,25,26,44,43,53,32,25,19,19,1,1,15,15,1,1, +22,21,27,10,13,10,8,1,176,2,49,49,66,67,55,82,54,54,2,2,54,54,82,55,67,66,49,49,2,122,31,46, +47,42,15,1,1,15,49,52,51,34,11,9,10,12,0,0,0,3,0,0,255,192,2,64,1,192,0,22,0,45,0,64, +0,0,1,35,39,35,34,7,6,29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,17,35,39,35,34,7,6, +29,1,20,23,22,59,1,50,55,54,61,1,52,39,38,35,1,38,39,35,6,7,17,20,23,22,59,1,53,35,53,51, +53,35,53,2,32,112,32,80,14,9,9,9,9,14,224,14,9,9,9,9,14,112,32,80,14,9,9,9,9,14,224,14, +9,9,9,9,14,254,32,1,15,32,15,1,9,9,14,224,192,192,192,1,160,32,9,9,14,160,14,9,9,9,9,14, +128,14,9,9,254,224,32,9,9,14,160,14,9,9,9,9,14,128,14,9,9,1,48,15,1,1,15,254,112,14,9,9, +64,224,64,80,0,6,0,16,255,224,1,240,1,160,0,18,0,39,0,67,0,93,0,119,0,145,0,0,37,22,21,20, +7,6,35,33,34,39,38,53,52,55,54,51,33,50,23,7,22,29,1,20,7,6,35,33,34,39,38,61,1,52,55,54, +51,33,50,23,37,38,39,38,39,38,55,54,55,54,55,22,23,22,23,22,7,6,7,48,49,6,7,6,35,33,34,39, +37,6,21,20,23,22,23,50,51,22,51,54,55,54,55,52,39,52,53,38,39,38,39,6,7,49,39,6,21,20,23,22, +23,50,51,22,51,54,55,54,55,52,39,52,53,38,39,38,39,6,7,49,7,6,21,20,23,22,23,50,51,22,51,54, +55,54,55,52,39,52,53,38,39,38,39,6,7,49,1,226,14,14,14,20,254,128,20,14,14,14,14,20,1,128,20,14, +7,5,19,19,26,254,192,26,19,19,5,4,7,1,160,7,4,254,87,6,5,5,1,2,2,18,61,60,84,84,60,61, +18,2,2,1,5,5,6,7,8,254,130,8,7,1,67,5,3,2,5,1,2,3,3,5,3,4,1,1,2,4,4,5, +7,4,128,5,3,2,5,1,2,3,3,5,3,4,1,1,2,4,4,5,7,4,128,5,3,2,5,1,2,3,3,5, +3,4,1,1,2,4,4,5,7,4,178,14,20,20,14,14,14,14,20,20,14,14,14,119,4,7,16,26,19,19,19,19, +26,16,7,4,5,5,168,4,5,6,8,7,7,67,42,42,1,1,42,42,67,7,7,8,6,6,3,3,3,104,4,7, +5,4,4,2,1,1,4,3,5,3,3,2,1,5,2,3,1,1,5,32,4,7,5,4,4,2,1,1,4,3,5,3, +3,2,1,5,2,3,1,1,5,32,4,7,5,4,4,2,1,1,4,3,5,3,3,2,1,5,2,3,1,1,5,0, +0,1,0,32,255,192,1,192,1,192,0,53,0,0,37,21,6,7,6,7,35,34,39,38,47,1,38,61,1,52,63,1, +21,22,23,54,55,53,54,55,54,55,22,23,22,23,53,52,55,54,51,50,23,22,29,1,54,55,50,23,22,23,54,51, +22,23,22,23,1,192,1,36,37,54,136,38,33,34,22,15,10,18,30,1,15,15,1,1,13,14,20,20,14,13,1,12, +11,17,17,11,12,14,26,18,13,13,3,11,14,20,14,13,1,160,96,54,37,36,1,17,17,30,19,13,16,48,23,14, +24,45,15,1,1,15,96,20,14,13,1,1,13,14,20,200,17,11,12,12,11,17,190,21,1,11,11,17,7,1,13,14, +20,0,0,0,0,2,0,0,255,224,2,64,1,160,0,21,0,45,0,0,37,38,39,49,38,39,7,53,38,39,35,6, +7,21,39,6,7,6,7,21,33,53,23,38,35,33,34,7,6,23,22,23,22,23,22,23,54,55,54,55,54,55,52,51, +54,39,2,32,1,40,39,60,52,1,17,92,17,1,52,60,39,40,1,2,0,31,5,10,253,224,10,5,3,6,1,26, +26,62,61,107,103,60,61,28,28,3,1,8,4,167,68,52,53,24,90,124,17,1,1,17,124,90,24,53,52,68,71,71, +113,10,10,9,8,3,16,17,16,16,1,1,15,15,16,17,4,1,8,9,0,4,0,0,255,192,2,64,1,192,0,37, +0,66,0,84,0,105,0,0,1,22,23,49,22,23,17,6,7,6,21,20,23,35,38,39,38,39,53,51,54,55,38,39, +35,53,51,54,55,38,39,35,53,54,55,54,55,51,7,6,7,21,35,6,7,21,22,23,51,21,22,23,51,54,55,53, +51,54,55,53,38,39,35,53,38,39,35,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,7,54,55, +49,54,55,51,22,23,22,23,20,7,6,43,1,34,39,38,53,49,1,16,20,14,13,1,29,17,18,10,218,20,14,13, +1,144,15,1,1,15,144,144,15,1,1,15,144,1,13,14,20,224,120,15,1,24,15,1,1,15,24,1,15,16,15,1, +24,15,1,1,15,24,1,15,16,1,104,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,224,1,26,27,39, +102,39,27,26,1,10,10,15,218,15,10,10,1,192,1,13,14,20,254,192,16,29,28,36,19,16,1,13,14,20,80,1, +15,15,1,64,1,15,15,1,208,20,14,13,1,64,1,15,24,1,15,16,15,1,24,15,1,1,15,24,1,15,16,15, +1,24,15,1,208,34,23,22,1,1,22,23,34,34,23,22,1,1,22,23,34,205,39,27,26,1,1,26,27,39,15,10, +10,10,10,15,0,4,0,0,255,193,2,0,1,192,0,17,0,136,0,149,0,162,0,0,1,38,35,49,34,7,1,6, +23,22,23,22,55,1,54,53,52,39,7,6,7,49,6,7,49,48,49,6,7,6,7,6,7,6,7,48,49,48,21,6, +7,6,7,6,7,6,7,34,49,6,7,6,7,6,7,48,49,48,49,6,7,6,7,6,7,6,7,48,49,6,7,6, +7,6,39,38,55,54,55,54,55,48,49,54,55,54,55,54,55,54,55,48,49,48,53,54,55,54,55,54,55,54,55,50, +49,54,55,54,55,54,55,54,55,48,49,48,49,54,55,54,55,54,55,54,55,48,51,48,49,54,55,54,55,54,23,22, +7,5,1,39,38,39,38,15,1,6,23,22,31,1,37,1,23,22,23,22,63,1,54,39,38,47,1,1,233,25,32,32, +24,254,160,32,11,13,44,44,33,1,96,23,23,50,15,13,13,11,9,9,8,9,9,3,3,1,1,5,5,14,15,13, +13,10,1,18,16,9,3,3,2,1,5,5,14,14,13,13,11,10,8,8,9,11,12,9,9,15,13,13,11,10,8,8, +9,9,3,3,1,1,5,5,14,15,13,13,10,1,9,8,8,9,9,3,3,2,1,5,5,14,14,13,13,11,1,9, +8,8,9,11,12,8,8,254,105,1,34,11,20,24,25,18,207,17,1,1,19,11,1,193,254,222,11,20,24,25,18,207, +17,1,1,19,11,1,169,23,23,254,160,33,44,44,13,11,32,1,96,24,32,32,25,95,14,5,5,1,2,3,3,9, +9,8,8,9,1,10,13,13,15,14,5,5,1,1,15,9,9,8,9,11,13,13,15,14,5,5,1,1,3,3,9,10, +10,11,11,14,5,5,1,2,3,3,9,9,8,8,9,1,10,13,13,15,14,5,5,1,2,3,3,8,9,9,8,9, +11,13,13,15,14,5,5,1,1,3,3,9,9,9,11,11,204,1,34,12,19,1,1,17,207,19,24,24,20,12,132,254, +222,11,19,1,1,17,207,19,24,24,20,11,0,2,0,32,255,192,1,160,1,192,0,11,0,55,0,0,55,33,7,6, +7,6,35,34,39,38,47,1,37,22,23,22,23,22,23,20,21,20,7,20,7,6,7,6,7,6,35,33,34,39,38,53, +52,55,54,55,51,38,53,54,55,54,55,22,23,22,23,20,7,51,50,23,96,1,0,99,4,9,7,9,10,7,8,4, +99,1,34,9,7,7,3,3,1,4,1,4,5,7,8,9,10,254,224,20,14,14,14,14,20,1,1,1,41,43,58,60, +43,41,1,1,1,9,9,160,206,8,5,5,5,5,8,206,124,4,6,7,9,7,9,1,1,10,9,1,1,7,6,7, +4,3,14,15,19,19,15,13,1,8,8,59,43,41,1,1,41,43,59,8,8,4,0,0,0,3,0,0,255,224,2,128, +1,160,0,16,0,33,0,62,0,0,37,33,6,7,21,22,23,22,23,33,54,55,54,55,53,38,39,1,33,17,51,17, +38,39,38,39,33,6,7,6,7,17,51,17,23,51,54,55,53,51,54,55,53,38,39,35,53,38,39,35,6,7,21,35, +6,7,21,22,23,51,21,22,23,2,112,253,160,15,1,1,18,18,27,2,0,27,18,18,1,1,15,254,16,1,128,64, +1,13,14,20,254,96,20,14,13,1,64,176,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,1,15,48, +1,15,64,1,15,16,27,18,18,1,1,18,18,27,16,15,1,1,32,255,0,1,16,20,14,13,1,1,13,14,20,254, +240,1,0,240,1,15,48,1,15,32,15,1,48,15,1,1,15,48,1,15,32,15,1,48,15,1,0,0,0,4,0,0, +0,0,2,0,1,128,0,20,0,29,0,38,0,60,0,0,1,33,6,7,6,7,17,22,23,22,23,33,54,55,54,55, +17,38,39,38,39,1,35,38,39,53,54,55,51,21,55,6,7,35,53,51,22,23,21,55,20,7,49,6,35,33,34,39, +38,61,1,52,55,54,51,33,50,23,22,29,1,1,192,254,128,27,18,18,1,1,18,18,27,1,128,27,18,18,1,1, +18,18,27,254,224,80,15,1,1,15,80,128,1,15,80,80,15,1,160,9,9,14,254,192,14,9,9,9,9,14,1,64, +14,9,9,1,128,1,18,18,27,255,0,27,18,18,1,1,18,18,27,1,0,27,18,18,1,254,208,1,15,16,15,1, +48,16,15,1,48,1,15,16,128,14,9,9,9,9,14,64,14,9,9,9,9,14,64,0,0,2,0,0,255,192,2,0, +1,191,0,23,0,48,0,0,1,54,39,49,38,39,38,7,6,23,22,7,38,39,6,7,23,21,51,23,54,55,38,39, +7,53,39,6,7,6,7,6,7,6,7,6,7,6,7,22,23,22,23,54,55,54,55,39,35,1,209,16,1,2,19,14, +19,17,11,21,17,26,30,55,39,78,91,33,35,1,2,45,145,53,19,17,17,22,22,33,32,49,24,16,15,1,1,15, +16,24,136,100,100,53,23,102,1,58,29,33,33,28,17,11,14,20,33,36,12,1,1,35,35,90,78,39,56,63,42,154, +101,23,30,41,39,38,37,25,25,1,1,15,16,24,24,16,15,1,3,51,51,63,56,0,0,5,0,0,255,193,2,0, +1,192,0,10,0,28,0,46,0,64,0,81,0,0,19,3,6,23,22,55,37,38,39,38,39,19,34,39,49,38,53,52, +55,54,51,50,23,22,21,20,7,6,35,55,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,34,39, +49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,3,38,15,1,22,23,22,23,55,54,39,38,39,38,39,38,39, +100,99,2,6,7,8,1,124,5,81,80,134,27,13,10,9,9,10,13,14,9,9,9,9,14,48,13,10,9,9,10,13, +14,9,9,9,9,14,97,14,9,9,9,9,14,14,9,9,9,9,14,113,27,8,15,142,86,86,8,57,25,1,12,49, +49,75,76,92,1,80,254,132,9,6,7,3,105,133,79,79,3,254,208,9,9,13,14,9,9,9,9,13,14,9,9,145, +9,9,14,13,9,9,9,9,13,14,9,9,96,9,9,13,14,9,9,9,9,14,13,9,9,1,111,1,25,57,5,85, +85,141,16,9,27,91,75,74,48,47,10,0,0,3,0,0,255,192,2,0,1,192,0,12,0,44,0,133,0,0,1,35, +39,38,55,54,55,51,22,23,22,15,2,51,48,51,22,23,22,23,22,23,22,23,6,7,6,7,33,38,39,38,39,54, +55,54,55,54,55,48,49,54,55,49,23,38,39,6,7,21,6,7,6,7,6,23,22,23,22,31,1,22,23,22,21,22, +21,6,7,6,39,38,39,38,35,38,35,38,7,6,23,22,51,48,21,22,23,21,22,23,54,55,53,54,55,54,55,54, +55,54,39,38,39,38,39,34,49,35,38,35,38,39,38,51,34,49,52,53,52,55,54,23,22,23,22,51,22,55,54,39, +38,39,53,1,64,128,47,5,4,4,10,196,10,4,4,5,47,128,128,1,5,6,31,41,42,32,32,2,1,27,27,41, +254,192,41,27,27,1,2,32,32,41,42,30,7,6,84,1,20,17,2,9,7,24,7,3,6,7,11,19,19,2,21,9, +3,1,1,7,10,19,11,15,2,2,1,2,18,7,4,17,1,3,13,17,2,17,20,1,5,4,3,3,26,6,3,6, +6,11,19,20,1,2,1,1,18,9,4,1,1,9,9,19,6,10,4,2,18,6,3,17,9,12,1,96,71,9,8,7, +1,1,7,8,9,71,32,4,4,18,34,35,55,56,82,41,27,27,1,1,27,27,41,82,56,55,35,34,18,4,4,96, +18,2,2,18,6,2,3,10,28,15,14,13,6,12,4,1,6,6,2,2,1,5,6,3,5,3,2,6,1,1,4,17, +18,6,2,1,4,5,6,18,2,2,18,5,1,2,1,1,10,29,16,13,14,7,12,5,1,5,6,3,1,4,4,4, +5,1,2,2,1,3,17,18,6,2,3,6,0,10,0,0,255,192,1,191,1,192,0,3,0,29,0,66,0,78,0,82, +0,86,0,90,0,94,0,101,0,105,0,0,37,51,39,7,55,33,6,7,6,7,17,22,23,21,6,7,20,23,22,51, +33,54,55,54,55,17,52,39,38,39,5,54,59,1,55,54,51,50,31,1,51,50,23,22,15,1,23,22,7,6,7,35, +7,6,7,38,47,1,35,38,39,38,63,1,39,38,55,1,33,53,33,50,23,22,21,20,7,6,35,39,55,35,23,39, +51,39,7,55,35,23,55,43,1,23,55,23,51,55,39,35,7,23,55,7,51,39,1,11,35,17,18,85,254,208,20,14, +13,1,1,15,15,1,9,9,13,1,64,41,27,27,1,27,27,41,254,249,6,12,56,28,6,11,11,6,28,56,12,6, +5,6,27,27,6,5,6,12,56,28,6,11,11,6,28,56,12,5,6,6,27,27,6,5,1,7,254,224,1,32,14,9, +9,9,9,14,144,17,34,17,95,35,18,17,188,35,18,17,152,36,19,17,28,62,32,32,62,32,32,31,17,34,17,203, +30,30,245,1,13,14,20,254,224,22,14,81,9,18,14,9,9,1,27,27,41,1,64,41,27,27,1,126,10,47,9,9, +47,10,10,10,46,46,10,10,10,1,46,9,1,1,9,46,1,10,10,10,46,46,10,10,254,190,64,9,9,14,14,9, +9,151,29,29,52,30,30,105,29,29,29,29,105,53,53,53,53,158,29,29,0,4,0,0,0,0,2,0,1,128,0,21, +0,26,0,48,0,53,0,0,1,22,23,49,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,33,7,35, +21,51,53,23,22,23,49,22,23,21,6,7,6,7,33,38,39,38,39,53,54,55,54,55,33,5,21,33,53,33,1,208, +20,14,13,1,1,13,14,20,254,96,20,14,13,1,1,13,14,20,1,160,16,128,128,16,20,14,13,1,1,13,14,20, +254,96,20,14,13,1,1,13,14,20,1,160,254,240,1,0,255,0,1,128,1,13,14,20,64,20,14,13,1,1,13,14, +20,64,20,14,13,1,64,32,32,160,1,13,14,20,64,20,14,13,1,1,13,14,20,64,20,14,13,1,64,32,32,0, +0,3,0,0,255,192,1,192,1,192,0,26,0,39,0,65,0,0,1,22,31,1,51,50,23,22,21,20,7,6,35,33, +34,39,38,53,52,55,54,59,1,55,54,55,51,7,33,3,6,7,6,43,1,34,39,38,39,3,23,7,6,23,22,63, +1,21,20,23,22,51,54,55,53,23,22,55,54,47,1,38,39,6,7,49,1,28,20,9,7,96,14,9,9,9,9,14, +254,128,14,9,9,9,9,14,96,7,9,20,120,253,1,129,21,2,13,14,19,246,19,14,13,2,22,176,80,14,14,17, +16,39,7,7,10,23,2,39,17,16,15,15,80,6,11,9,7,1,192,1,17,14,9,9,14,14,9,9,9,9,14,14, +9,9,14,17,1,128,254,174,20,13,13,13,13,20,1,82,71,80,17,16,15,15,38,134,10,7,7,2,22,134,38,15, +15,16,17,80,7,1,1,7,0,3,0,0,255,192,1,192,1,192,0,26,0,39,0,65,0,0,1,22,31,1,51,50, +23,22,21,20,7,6,35,33,34,39,38,53,52,55,54,59,1,55,54,55,51,7,33,17,6,7,6,7,33,38,39,38, +39,17,23,7,6,23,22,63,1,21,20,23,22,51,54,55,53,23,22,55,54,47,1,38,39,6,7,49,1,28,20,9, +7,96,14,9,9,9,9,14,254,128,14,9,9,9,9,14,96,7,9,20,120,253,1,129,1,18,18,27,254,255,27,18, +18,1,176,80,14,14,17,16,39,7,7,10,23,2,39,17,16,15,15,80,6,11,9,7,1,192,1,17,14,9,9,14, +14,9,9,9,9,14,14,9,9,14,17,1,128,254,192,27,18,18,1,1,18,18,27,1,64,71,80,17,16,15,15,38, +134,10,7,7,2,22,134,38,15,15,16,17,80,7,1,1,7,0,0,0,0,4,0,0,255,192,1,192,1,192,0,21, +0,50,0,62,0,82,0,0,55,54,55,49,54,55,53,38,47,1,38,35,34,15,1,6,7,21,22,23,22,23,39,52, +59,1,53,52,59,1,50,29,1,51,50,29,1,20,43,1,21,20,43,1,34,61,1,35,34,61,1,7,51,21,6,7, +6,7,38,39,38,39,53,23,7,39,6,7,6,7,20,23,22,51,33,50,55,54,53,38,39,38,39,224,54,37,36,1, +1,20,84,11,12,11,11,85,20,1,1,36,37,54,40,5,22,5,16,5,22,5,5,22,5,16,5,22,5,40,160,1, +22,23,34,34,23,22,1,183,103,103,54,33,33,1,10,10,15,1,122,15,10,10,2,33,32,54,144,1,36,37,54,110, +22,8,32,4,4,32,8,22,110,54,37,36,1,232,5,22,5,5,22,5,16,5,22,5,5,22,5,16,88,16,34,23, +22,1,1,22,23,34,16,153,103,103,17,44,44,59,15,10,10,10,10,15,59,44,44,17,0,1,0,0,255,224,2,128, +1,159,0,54,0,0,5,35,34,39,38,53,17,35,21,20,7,6,43,1,34,39,38,53,52,55,54,59,1,53,52,55, +54,59,1,50,23,22,21,17,51,53,52,55,54,59,1,50,23,22,21,20,7,6,43,1,21,20,7,6,35,1,220,152, +15,10,11,96,11,10,15,125,13,9,9,9,9,13,97,11,10,15,152,15,10,11,96,11,10,15,124,14,9,9,9,9, +13,97,11,10,15,32,11,10,15,1,92,156,15,10,11,9,9,14,14,8,9,156,15,11,10,10,11,15,254,164,156,15, +11,10,8,9,14,14,9,9,156,15,10,11,0,6,0,0,255,192,2,128,1,192,0,17,0,57,0,75,0,93,0,111, +0,129,0,0,1,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,23,22,23,49,22,21,20,7,6,43, +1,6,47,1,7,23,22,29,1,20,7,6,35,34,39,38,61,1,39,38,39,38,63,1,54,51,50,31,1,51,7,6, +7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,49,6,7,22,23,22,23,54,55,54,55,38,39, +38,39,5,6,7,49,6,7,38,39,38,39,54,55,54,55,22,23,22,23,39,6,7,49,6,7,22,23,22,23,54,55, +54,55,38,39,38,39,1,96,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,128,14,9,9,9,9,14,64, +11,9,41,60,43,14,9,9,14,14,9,9,60,25,1,2,23,83,14,16,16,13,62,53,224,1,36,37,54,54,37,36, +1,1,36,37,54,54,37,36,1,128,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,2,0,1,36,37,54, +54,37,36,1,1,36,37,54,54,37,36,1,128,31,20,20,1,1,20,20,31,31,20,20,1,1,20,20,31,1,144,20, +14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,111,1,9,9,13,14,9,9,1,8,32,49,28,10,17,128,14, +9,9,9,9,14,111,38,18,27,28,19,64,10,10,48,225,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54, +72,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36, +37,54,72,1,20,20,31,31,20,20,1,1,20,20,31,31,20,20,1,0,0,5,0,0,255,224,1,192,1,160,0,21, +0,26,0,31,0,36,0,41,0,0,1,22,23,49,22,23,17,6,7,6,7,33,38,39,38,39,17,54,55,54,55,33, +21,35,21,51,53,21,35,21,51,53,39,53,35,21,51,7,51,53,35,21,1,128,27,18,18,1,1,18,18,27,254,192, +27,18,18,1,1,18,18,27,1,64,128,128,128,128,192,128,128,128,128,128,1,160,1,18,18,27,254,192,27,18,18,1, +1,18,18,27,1,64,27,18,18,1,64,128,128,192,128,128,64,128,128,192,128,128,0,0,0,21,0,0,255,224,1,192, +1,160,0,17,0,35,0,53,0,71,0,89,0,107,0,125,0,143,0,161,0,179,0,197,0,215,0,233,0,251,1,13, +1,31,1,49,1,67,1,85,1,103,1,121,0,0,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,17,34,39,49,38,53,52,55,54,51,50,23,22,21, +20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,34,39,49,38,53,52,55,54,51, +50,23,22,21,20,7,6,35,19,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,7,34,39,49,38,53, +52,55,54,51,50,23,22,21,20,7,6,35,7,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,3,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,17,34,39,49,38,53,52,55,54,51,50,23, +22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,5,34,39,49,38,53,52,55, +54,51,50,23,22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,23,34,39,49, +38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21, +5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,37,20,7,49,6,35,34,39,38,53,52,55,54,51, +50,23,22,21,5,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,55,20,7,49,6,35,34,39,38,53, +52,55,54,51,50,23,22,21,64,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9, +9,14,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9, +9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9, +9,14,64,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14, +14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9, +9,14,254,160,9,9,14,14,9,9,9,9,14,14,9,9,1,96,14,9,9,9,9,14,14,9,9,9,9,14,254,160, +9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9, +9,9,14,14,9,9,254,96,14,9,9,9,9,14,14,9,9,9,9,14,1,160,9,9,14,14,9,9,9,9,14,14, +9,9,254,96,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,0,14,9, +9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9,9,14,14,9,9,1,128,9,9,14,14,9,9,9, +9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,1, +160,14,9,9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9, +14,14,9,9,9,9,14,1,96,9,9,14,14,9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9, +9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,1,128,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9, +9,9,9,14,14,9,9,9,9,14,224,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9, +9,9,9,14,128,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9, +9,14,14,9,9,9,9,14,14,9,9,224,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9,9,9, +9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,0,0,0,8,0,0,255,224,1,192,1,160,0,27, +0,45,0,63,0,81,0,99,0,117,0,135,0,153,0,0,19,54,55,49,54,55,33,50,23,22,21,20,7,6,35,33, +6,7,17,20,7,6,35,34,39,38,53,17,19,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,51,34, +39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,39,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23, +22,21,23,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,53,34,39,49,38,53,52,55,54,51,50,23, +22,21,20,7,6,35,23,20,7,49,6,35,34,39,38,53,52,55,54,51,50,23,22,21,39,34,39,49,38,53,52,55, +54,51,50,23,22,21,20,7,6,35,0,1,22,23,34,1,80,14,9,9,9,9,14,254,176,15,1,9,9,14,14,9, +9,128,14,9,9,9,9,14,14,9,9,9,9,14,192,14,9,9,9,9,14,14,9,9,9,9,14,64,9,9,14,14, +9,9,9,9,14,14,9,9,160,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9,14,14,9,9,9,9, +14,32,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,1,80,34,23,22, +1,9,9,14,14,9,9,1,15,254,176,14,9,9,9,9,14,1,80,254,144,9,9,14,14,9,9,9,9,14,14,9, +9,9,9,14,14,9,9,9,9,14,14,9,9,32,14,9,9,9,9,14,14,9,9,9,9,14,32,9,9,14,14,9, +9,9,9,14,14,9,9,192,9,9,14,14,9,9,9,9,14,14,9,9,64,14,9,9,9,9,14,14,9,9,9,9, +14,160,9,9,14,14,9,9,9,9,14,14,9,9,0,0,0,5,0,0,255,192,2,64,1,192,0,17,0,44,0,84, +0,89,0,93,0,0,1,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,3,38,47,1,7,6,23,22, +23,22,55,54,63,1,23,21,20,23,22,51,50,55,54,61,1,52,39,23,6,15,1,33,39,38,39,38,15,1,47,1, +38,39,38,49,34,35,38,35,38,39,38,43,1,34,15,1,6,49,6,21,6,23,22,23,5,7,35,47,1,55,51,7, +23,55,23,39,1,16,20,14,13,1,1,13,14,20,20,14,13,1,1,13,14,20,62,39,41,71,58,3,6,6,13,14, +11,11,4,36,61,9,9,14,14,9,9,14,101,22,8,25,1,64,102,10,17,18,11,32,65,24,14,56,1,1,1,2, +1,2,2,23,25,74,14,10,56,1,1,7,4,3,11,1,81,10,40,205,24,29,34,39,94,34,14,48,1,96,1,13, +14,20,20,14,13,1,1,13,14,20,20,14,13,1,254,251,26,22,39,201,13,11,12,4,3,6,6,13,128,40,79,13, +9,10,10,9,13,96,17,10,59,1,21,74,206,17,1,1,17,54,36,121,62,29,1,1,1,1,10,11,64,1,1,1, +10,12,12,7,184,17,212,13,32,45,52,41,67,26,0,0,0,2,0,0,255,192,2,0,1,193,0,36,0,54,0,0, +1,34,7,55,38,35,6,7,6,7,20,23,39,6,21,22,23,22,23,50,55,7,22,51,54,55,54,55,52,39,23,54, +53,38,39,38,39,7,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35,1,97,43,35,13,1,18,61,40, +39,2,13,122,18,8,45,44,62,43,35,13,1,18,61,39,40,1,13,123,18,9,44,44,62,98,13,9,9,9,9,13, +13,9,9,8,9,14,1,65,13,123,18,10,44,44,62,43,35,13,1,18,61,39,40,1,13,123,18,9,44,44,62,43, +35,13,1,18,61,40,39,2,160,9,9,14,13,10,9,9,10,13,14,9,9,0,0,0,0,5,0,0,255,193,2,0, +1,192,0,37,0,66,0,84,0,107,0,131,0,0,1,22,29,1,6,7,6,35,34,39,38,39,54,55,54,55,53,7, +21,6,7,6,35,34,39,38,39,54,55,54,55,53,54,63,1,54,23,49,1,55,54,55,51,22,31,1,51,22,23,22, +29,1,20,7,6,43,1,34,39,38,39,53,54,55,54,55,51,23,6,7,49,6,7,22,23,22,51,50,55,54,53,52, +39,38,39,5,51,22,23,22,15,1,6,39,38,63,1,35,34,39,38,63,1,54,23,22,15,1,37,39,38,55,54,55, +54,23,22,31,1,55,54,55,54,23,22,23,22,15,1,6,39,49,1,244,12,1,18,18,28,26,19,18,1,1,18,19, +26,96,1,17,18,28,26,19,18,1,1,18,19,26,2,25,160,14,12,254,87,12,9,17,62,17,10,11,26,21,13,14, +14,13,21,192,20,13,13,1,1,13,13,20,28,68,20,13,14,1,1,14,13,20,21,13,14,14,13,21,1,41,56,11, +3,5,8,128,10,10,10,4,39,56,11,4,3,8,128,9,10,10,4,39,254,189,97,21,1,1,24,21,26,27,19,10, +10,19,27,26,22,23,1,1,21,96,12,11,1,185,10,14,144,21,13,14,14,13,21,20,13,14,1,56,19,117,21,13, +14,14,13,21,20,13,14,1,96,24,6,32,3,9,254,216,17,14,1,1,14,17,1,14,13,20,112,21,13,14,14,13, +21,112,20,13,14,1,56,1,14,13,20,21,13,14,14,13,21,20,13,14,1,8,1,10,11,7,112,7,6,8,11,91, +9,10,9,112,6,6,8,11,89,148,100,23,29,30,22,17,2,3,19,10,10,19,3,2,17,22,30,29,23,100,10,10, +0,1,0,0,255,192,2,0,1,191,0,28,0,0,63,1,54,31,1,54,55,54,55,39,38,63,1,54,31,1,22,23, +6,7,6,7,6,7,38,47,1,38,55,19,108,22,15,44,52,41,41,25,53,17,8,46,12,24,101,23,1,1,62,61, +103,103,128,23,7,23,4,22,97,46,8,17,53,25,41,41,52,44,15,22,108,22,4,23,7,24,127,103,103,62,61,1, +1,23,101,24,12,0,0,0,0,2,0,0,255,224,1,192,1,160,0,20,0,47,0,0,19,17,22,23,22,23,33,54, +55,54,55,17,38,39,38,39,33,6,7,6,7,23,55,54,31,1,54,55,39,38,63,1,54,31,1,22,23,6,7,6, +7,6,7,38,47,1,38,55,0,1,18,18,27,1,64,27,18,18,1,1,18,18,27,254,192,27,18,18,1,106,54,10, +8,22,53,27,27,8,3,24,5,13,50,11,1,1,30,31,51,52,64,12,3,12,2,12,1,96,254,192,27,18,18,1, +1,18,18,27,1,64,27,18,18,1,1,18,18,27,208,24,4,9,27,27,53,22,8,10,55,11,2,12,3,12,64,52, +51,31,30,1,1,11,50,13,5,0,0,0,0,8,0,0,255,192,2,127,1,192,0,24,0,37,0,50,0,63,0,76, +0,97,0,115,0,137,0,0,37,6,7,35,38,39,17,35,6,7,6,7,17,22,23,22,23,33,54,55,54,55,53,35, +21,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38, +39,53,54,55,51,22,23,21,5,54,55,51,22,23,21,6,7,35,38,39,53,19,33,6,7,6,7,17,22,23,22,23, +33,54,55,54,53,17,52,39,38,39,5,50,23,49,22,21,20,7,6,35,34,39,38,39,54,55,54,51,5,6,35,33, +34,39,38,63,1,54,51,50,31,1,55,54,51,50,31,1,22,7,1,96,1,15,160,15,1,112,20,14,13,1,1,13, +14,20,1,160,20,14,13,1,160,248,1,8,30,8,1,1,8,30,8,1,1,8,30,8,1,1,8,30,8,1,1,8, +30,8,1,1,8,30,8,1,1,48,1,8,30,8,1,1,8,30,8,1,183,254,160,20,13,14,1,1,13,14,20,1, +96,20,14,14,13,14,21,254,224,14,9,9,9,9,14,13,9,9,1,1,9,9,13,1,15,5,9,254,223,9,4,4, +5,70,5,7,8,5,22,63,5,9,9,5,106,5,4,16,15,1,1,15,1,48,1,13,14,20,254,224,20,14,13,1, +1,13,14,20,80,48,7,8,1,1,8,30,8,1,1,8,30,104,8,1,1,8,30,8,1,1,8,30,104,8,1,1, +8,30,8,1,1,8,30,178,8,1,1,8,30,8,1,1,8,30,1,153,1,13,14,20,255,0,20,14,13,1,1,13, +14,20,1,0,20,14,13,1,64,9,9,14,14,9,9,9,9,14,14,9,9,216,8,9,8,8,96,7,7,30,94,7, +7,160,8,9,0,3,0,0,255,193,2,127,1,192,0,22,0,58,0,65,0,0,37,35,55,39,7,35,34,7,6,21, +20,23,22,59,1,50,55,54,53,52,39,38,35,5,37,55,51,21,20,23,22,51,50,55,54,61,1,52,39,38,35,33, +34,7,6,29,1,39,38,7,6,23,1,22,51,50,55,54,39,1,39,54,61,1,51,7,1,96,45,19,55,32,47,14, +9,9,9,9,13,160,14,10,9,9,9,14,1,23,254,235,46,112,9,9,14,14,9,9,9,9,14,254,160,14,9,9, +121,19,15,12,16,2,79,7,8,11,8,13,16,254,181,82,6,109,33,32,64,43,107,9,9,14,14,9,9,9,9,14, +14,9,9,53,217,156,32,14,9,9,9,9,14,64,14,9,9,9,9,14,36,95,12,16,19,15,254,49,5,9,17,16, +1,3,64,8,10,32,114,0,0,4,0,7,255,224,1,239,1,160,0,35,0,64,0,90,0,94,0,0,23,22,51,49, +50,63,1,54,39,52,39,38,35,6,15,1,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1, +19,51,7,6,23,22,23,51,54,55,52,39,38,43,1,55,54,39,38,39,35,34,7,6,21,20,23,22,51,19,39,38, +35,34,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,104,10,14,14,10, +87,9,1,10,11,12,13,9,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,216,51,74,14,7,9,21, +127,31,2,9,9,14,51,74,14,7,9,22,127,14,9,9,9,9,14,173,80,10,19,19,10,80,5,4,4,12,12,12, +12,7,7,88,7,5,12,12,14,12,4,4,5,125,16,16,32,22,10,10,96,10,13,13,9,9,1,10,35,1,46,14, +9,9,9,9,14,254,210,35,11,9,9,13,13,10,96,1,118,73,16,19,19,1,3,29,14,9,9,73,16,19,19,1, +9,9,14,14,9,9,254,175,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12,12,13,42,32, +32,0,0,0,0,4,0,8,255,224,1,239,1,160,0,35,0,64,0,90,0,94,0,0,19,38,35,49,34,15,1,6, +21,22,23,22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,51,50,55,54,55,54,47,1,23,51,7,6, +23,22,23,51,54,55,52,39,38,43,1,55,54,39,38,39,35,34,7,6,21,20,23,22,51,19,39,38,35,34,15,1, +6,23,22,23,22,55,54,63,1,51,23,22,23,22,55,54,55,54,47,1,55,23,35,152,10,14,14,10,87,9,1,9, +11,12,13,10,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,168,51,74,14,7,9,21,127,31,2,9, +9,14,51,74,14,7,9,22,127,14,9,9,9,9,14,173,80,10,19,19,10,80,5,4,4,12,12,12,12,7,7,88, +7,5,12,12,14,12,4,4,5,125,16,16,32,1,150,10,10,96,10,13,13,9,9,1,10,35,254,210,14,9,9,9, +10,14,1,45,35,11,9,9,13,13,10,96,54,73,16,19,19,1,3,29,14,9,9,73,16,19,19,1,9,9,14,14, +9,9,254,175,160,16,16,160,13,12,12,6,6,4,4,12,14,14,10,6,5,7,6,12,12,13,42,32,32,0,0,0, +0,5,0,7,255,224,2,64,1,160,0,18,0,37,0,56,0,75,0,110,0,0,37,51,50,55,54,53,52,39,38,43, +1,34,7,6,21,20,23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,17,51,50,55, +54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,19,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39, +38,35,37,7,17,52,39,38,35,34,7,6,21,17,39,38,35,34,7,6,7,6,31,1,22,51,50,63,1,54,39,52, +39,38,35,6,7,1,64,96,14,9,9,9,9,14,95,14,9,9,9,8,14,160,14,9,9,9,9,14,159,14,9,9, +9,8,14,32,14,8,9,9,9,13,32,14,9,9,9,9,14,224,223,14,9,9,9,9,14,223,14,9,9,9,9,14, +254,160,32,9,9,14,14,9,9,32,10,14,12,10,9,1,1,9,88,9,14,14,10,87,9,1,10,9,13,12,10,224, +9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,1,0,9,9,14,14,9, +9,9,9,14,14,9,9,254,192,9,9,14,14,9,9,9,9,14,14,9,9,85,35,1,46,14,9,9,9,9,14,254, +210,35,11,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1,10,0,0,5,0,8,255,224,2,64,1,160,0,18, +0,37,0,56,0,75,0,111,0,0,37,35,34,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,35,3,51,50, +55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20, +23,22,51,21,51,50,55,54,53,52,39,38,43,1,34,7,6,21,20,23,22,51,3,38,35,49,34,15,1,6,21,22, +23,22,51,50,63,1,17,20,23,22,51,50,55,54,53,17,23,22,23,50,55,54,55,52,47,1,2,32,223,14,9,9, +9,9,14,223,14,9,9,9,9,14,224,32,14,8,9,9,9,13,32,14,9,9,9,9,14,96,14,9,9,9,9,14, +95,14,9,9,9,8,14,160,14,9,9,9,9,14,159,14,9,9,9,8,14,168,10,14,14,10,87,9,1,9,10,12, +14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,8,88,32,9,9,14,14,9,9,9,9,14,14,9,9,1, +64,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9,9,9,9,14,14,9,9,128,9,9,14,14,9, +9,9,9,14,14,9,9,1,54,10,10,96,10,13,13,9,9,11,35,254,210,14,9,9,9,9,14,1,46,35,10,1, +9,9,13,13,10,96,0,0,0,4,0,7,255,224,1,224,1,160,0,34,0,62,0,71,0,102,0,0,55,34,15,1, +17,52,39,38,35,34,7,6,21,17,39,38,39,34,7,6,7,6,31,1,22,51,50,63,1,54,39,52,39,38,35,55, +7,6,21,20,23,22,51,50,55,54,55,54,55,54,39,38,39,38,39,6,7,6,7,20,23,22,23,55,22,23,6,7, +38,39,54,55,19,53,38,39,38,15,1,6,7,6,23,22,51,21,6,7,6,21,20,23,22,59,1,50,55,54,53,52, +39,38,39,216,14,10,32,9,9,14,14,9,9,32,10,13,12,11,9,1,1,9,88,9,14,14,10,87,9,1,10,8, +12,142,8,8,9,8,11,12,8,16,13,34,14,14,1,1,25,25,37,37,25,25,1,15,15,24,34,22,2,2,22,22, +2,2,22,24,1,14,16,16,32,12,3,4,6,9,19,14,9,9,9,9,14,64,14,9,9,9,9,14,128,11,35,1, +46,14,9,9,9,9,14,254,210,35,10,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,119,8,9,11,11,9, +7,8,17,12,35,19,20,25,37,25,25,1,1,25,25,37,28,21,22,10,105,2,22,22,2,2,22,22,2,254,192,96, +17,10,9,8,17,6,12,12,13,17,47,1,9,9,13,14,9,9,9,9,14,13,9,9,1,0,0,0,0,4,0,8, +255,224,1,224,1,160,0,35,0,63,0,72,0,103,0,0,19,54,55,49,52,47,1,38,35,34,15,1,6,21,22,23, +22,51,54,63,1,17,20,23,22,51,50,55,54,53,17,23,22,51,50,55,23,7,6,21,20,23,22,51,50,55,54,55, +54,55,54,39,38,39,38,39,6,7,6,7,20,23,22,23,55,22,23,6,7,38,39,54,55,19,53,38,39,38,15,1, +6,7,6,23,22,51,21,6,7,6,21,20,23,22,59,1,50,55,54,53,52,39,38,39,238,9,1,8,88,10,14,14, +10,87,9,1,9,11,12,13,10,32,9,9,13,13,9,10,33,10,14,12,10,120,8,8,9,8,11,12,8,16,13,34, +14,14,1,1,25,25,37,37,25,25,1,15,15,24,34,22,2,2,22,22,2,2,22,24,1,14,16,16,32,12,3,4, +6,9,19,14,9,9,9,9,14,64,14,9,9,9,9,14,1,9,9,13,13,10,96,10,10,96,10,13,13,9,9,1, +10,35,254,210,14,9,9,9,9,14,1,46,35,11,9,18,8,9,11,11,9,7,8,17,12,35,19,20,25,37,25,25, +1,1,25,25,37,28,21,22,10,105,2,22,22,2,2,22,22,2,254,192,96,17,10,9,8,17,6,12,12,13,17,47, +1,9,9,13,14,9,9,9,9,14,13,9,9,1,0,0,0,6,0,0,255,192,2,64,1,192,0,25,0,51,0,55, +0,79,0,87,0,95,0,0,37,38,35,49,34,15,1,39,38,35,34,7,6,21,20,31,1,22,51,50,63,1,54,53, +52,39,37,39,38,39,6,15,1,6,23,22,23,22,55,54,63,1,51,23,22,23,50,55,54,55,54,47,1,55,23,35, +23,51,54,55,54,55,38,39,54,53,38,39,38,39,35,34,7,6,29,1,20,23,22,51,55,51,22,23,6,7,35,53, +21,51,22,23,6,7,35,53,2,55,10,13,13,10,169,73,10,13,13,10,9,9,96,10,13,13,10,192,9,9,254,167, +80,9,21,21,9,80,4,4,5,13,12,12,12,6,5,90,5,10,20,6,6,13,5,4,4,129,19,19,38,195,80,34, +23,22,1,1,25,10,1,22,23,33,65,14,9,9,9,9,14,32,32,15,1,1,15,32,48,15,1,1,15,48,183,9, +9,170,74,9,9,10,13,13,10,96,9,9,192,10,13,13,10,53,192,19,1,1,19,192,12,12,12,6,4,4,5,13, +12,12,19,1,2,6,12,12,12,52,45,45,96,1,22,23,33,36,23,18,20,34,23,22,1,9,9,13,192,14,10,9, +192,1,15,15,1,32,96,1,15,15,1,32,0,3,0,0,0,65,2,128,1,96,0,35,0,53,0,71,0,0,1,34, +7,49,6,7,6,23,22,23,35,54,39,38,39,38,39,38,7,6,7,6,23,22,23,22,23,33,54,55,54,55,38,39, +38,39,5,54,55,49,54,55,22,23,22,23,6,7,6,7,38,39,38,39,5,38,39,49,38,39,54,55,54,55,22,23, +22,23,6,7,6,7,1,239,40,34,34,19,19,2,2,22,111,27,3,4,33,35,47,48,45,44,20,19,11,13,38,38, +51,1,96,61,41,40,2,2,40,41,62,254,81,1,22,23,34,34,23,22,1,1,22,23,34,34,23,22,1,1,175,34, +22,23,1,1,23,22,34,34,23,22,1,1,22,22,35,1,96,20,21,35,36,39,39,34,42,49,48,38,37,8,8,23, +25,44,44,49,49,29,29,1,1,40,41,61,61,41,40,2,144,34,23,22,1,1,22,23,34,34,22,22,1,1,22,22, +34,80,1,22,23,33,33,23,23,1,1,22,23,34,34,22,22,1,0,0,0,2,0,0,0,0,2,127,1,160,0,26, +0,67,0,0,37,38,39,49,38,39,49,38,39,6,7,6,35,34,39,38,39,6,7,6,7,6,7,22,23,54,63,1, +38,7,48,49,6,7,6,7,6,7,38,39,38,39,38,39,48,49,38,7,6,23,20,23,22,23,22,23,22,23,54,55, +54,55,54,55,54,39,54,39,1,233,4,12,12,20,20,29,21,16,16,19,19,16,16,21,29,20,20,12,12,5,57,112, +113,57,144,10,10,1,34,33,65,65,95,95,65,65,33,34,1,10,10,9,3,16,16,37,37,61,61,90,90,61,62,36, +37,16,17,1,6,10,183,32,54,54,45,45,3,1,13,12,12,13,1,3,45,45,54,54,32,21,2,2,21,37,6,7, +3,22,21,22,21,2,2,21,22,21,22,3,7,6,7,11,3,30,30,39,39,30,29,2,2,29,30,39,39,30,30,2, +12,7,0,0,0,2,0,0,255,255,2,128,1,160,0,16,0,49,0,0,37,38,35,6,7,6,7,6,23,22,51,33, +34,39,38,47,1,55,39,38,39,38,15,1,6,7,6,15,1,50,55,54,51,50,31,1,22,23,22,51,54,55,54,55, +52,39,38,39,38,39,1,5,44,53,59,44,43,17,5,14,14,22,2,34,75,51,51,56,98,235,28,5,22,22,27,191, +21,13,14,2,7,2,1,9,8,64,54,98,51,45,46,70,20,14,13,1,12,12,32,32,56,188,35,1,42,42,71,26, +21,21,27,27,50,85,18,157,26,16,15,5,41,5,15,15,21,65,1,1,43,84,46,26,25,1,13,14,20,14,29,28, +25,26,5,0,0,3,0,0,255,192,1,128,1,192,0,13,0,22,0,31,0,0,55,22,23,49,22,23,51,54,55,54, +55,53,33,21,19,35,6,7,6,7,21,51,53,51,35,21,51,53,38,39,38,39,0,2,45,45,68,64,68,45,45,2, +254,128,176,16,68,45,45,2,176,48,16,176,2,45,45,68,96,68,45,45,2,2,45,45,68,128,128,1,96,2,45,45, +68,32,192,192,32,68,45,45,2,0,0,0,0,5,0,0,255,194,1,255,1,191,0,27,0,40,0,53,0,66,0,84, +0,0,1,35,37,54,39,38,7,5,6,7,6,7,49,21,22,23,22,51,33,54,55,54,61,1,54,39,38,39,5,54, +59,1,22,29,1,6,43,1,38,61,1,23,6,43,1,38,61,1,54,59,1,22,29,1,55,6,43,1,38,61,1,54, +59,1,22,29,1,23,38,39,49,38,39,54,55,54,55,22,23,22,23,6,7,6,7,1,191,228,1,20,19,3,7,23, +254,83,22,14,14,2,1,18,18,26,1,127,27,18,18,1,18,17,28,254,145,1,6,111,7,1,6,111,7,128,1,6, +111,7,1,6,111,7,16,1,6,145,7,1,6,143,7,145,34,22,23,1,1,23,22,34,34,22,22,1,1,21,22,35, +1,64,81,8,22,20,4,126,7,17,18,23,255,27,18,18,1,17,18,27,255,27,18,18,1,120,7,1,6,15,7,1, +6,15,143,7,1,6,15,7,1,6,15,64,7,1,6,16,7,1,6,16,72,1,22,23,33,33,23,23,1,1,22,23, +34,34,22,22,1,0,0,0,0,4,0,0,255,192,2,0,1,192,0,17,0,35,0,62,0,80,0,0,1,6,7,49, +6,7,22,23,22,23,54,55,54,55,38,39,38,39,21,34,39,49,38,53,52,55,54,51,50,23,22,21,20,7,6,35, +17,6,7,49,6,7,49,6,7,22,23,22,23,22,23,54,55,54,55,54,55,38,39,38,39,38,39,17,38,39,49,38, +39,54,55,54,55,22,23,22,23,6,7,6,7,1,0,41,27,27,1,1,27,27,41,41,27,27,1,1,27,27,41,14, +9,9,9,9,14,14,9,9,9,9,14,72,57,58,34,34,1,1,34,34,58,57,72,72,57,58,34,34,1,1,34,34, +58,57,72,54,37,36,1,1,36,37,54,54,37,36,1,1,36,37,54,1,32,1,27,27,41,41,27,27,1,1,27,27, +41,41,27,27,1,128,9,9,14,14,9,9,9,9,14,14,9,9,1,32,1,34,34,58,57,72,72,57,58,34,34,1, +1,34,34,58,57,72,72,57,58,34,34,1,254,128,1,36,37,54,54,37,36,1,1,36,37,54,54,37,36,1,0,0, +0,4,0,0,255,192,1,128,1,192,0,51,0,64,0,77,0,90,0,0,1,35,53,38,39,35,6,7,21,35,53,38, +39,35,6,7,21,35,53,38,39,6,7,21,35,34,7,6,29,1,20,31,1,21,22,23,22,23,51,54,55,54,55,53, +55,54,61,1,52,39,38,35,7,6,7,35,38,39,53,54,55,51,22,23,21,53,6,7,35,38,39,53,54,55,51,22, +23,21,53,6,7,35,38,39,53,54,55,51,22,23,21,1,96,32,1,15,32,15,1,32,1,15,32,15,1,48,2,22, +22,2,32,14,9,9,9,23,1,13,14,20,224,20,14,13,1,23,9,9,9,14,64,1,7,176,7,1,1,7,176,7, +1,1,7,176,7,1,1,7,176,7,1,1,7,176,7,1,1,7,176,7,1,1,96,16,15,1,1,15,16,16,15,1, +1,15,16,73,21,2,2,21,73,9,9,14,179,13,9,23,112,20,14,13,1,1,13,14,20,112,23,9,13,179,14,9, +9,216,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1,7,16,64,7,1,1,7,16,7,1,1, +7,16,0,0,0,4,0,0,255,192,2,128,1,160,0,35,0,55,0,77,0,95,0,0,19,54,55,49,54,55,33,22, +23,22,23,21,51,50,23,22,21,20,7,6,35,33,6,7,6,7,38,39,38,39,35,38,39,38,39,53,5,51,53,35, +38,39,54,55,51,53,52,39,38,43,1,34,7,6,29,1,39,34,7,49,6,29,1,20,23,22,59,1,50,55,54,61, +1,52,39,38,43,1,19,54,55,49,54,55,38,39,38,39,6,7,6,7,22,23,22,23,0,1,22,23,34,1,80,68, +45,45,2,32,14,9,9,9,9,14,254,192,1,27,27,41,41,27,27,1,16,34,23,22,1,1,64,128,32,15,1,1, +15,32,9,9,14,64,14,9,9,224,14,9,9,9,9,14,128,14,9,9,9,9,14,128,96,20,14,13,1,1,13,14, +20,20,14,13,1,1,13,14,20,1,80,34,23,22,1,2,45,45,68,160,9,9,14,14,9,9,41,27,27,1,1,27, +27,41,1,22,23,34,224,240,96,1,15,15,1,64,14,9,9,9,9,14,192,224,9,9,14,64,14,9,9,9,9,14, +64,14,9,9,254,176,1,13,14,20,20,14,13,1,1,13,14,20,20,14,13,1,0,0,0,0,0,22,1,14,0,1, +0,0,0,0,0,0,0,26,0,108,0,1,0,0,0,0,0,1,0,25,0,134,0,1,0,0,0,0,0,2,0,5, +0,53,0,1,0,0,0,0,0,3,0,31,0,22,0,1,0,0,0,0,0,4,0,25,0,134,0,1,0,0,0,0, +0,5,0,50,0,58,0,1,0,0,0,0,0,6,0,22,0,0,0,1,0,0,0,0,0,10,0,44,0,159,0,1, +0,0,0,0,0,11,0,23,0,222,0,1,0,0,0,0,0,16,0,19,0,203,0,1,0,0,0,0,0,17,0,5, +0,53,0,3,0,1,4,9,0,0,0,52,1,205,0,3,0,1,4,9,0,1,0,50,2,1,0,3,0,1,4,9, +0,2,0,10,1,95,0,3,0,1,4,9,0,3,0,62,1,33,0,3,0,1,4,9,0,4,0,50,2,1,0,3, +0,1,4,9,0,5,0,100,1,105,0,3,0,1,4,9,0,6,0,44,0,245,0,3,0,1,4,9,0,10,0,88, +2,51,0,3,0,1,4,9,0,11,0,46,2,177,0,3,0,1,4,9,0,16,0,38,2,139,0,3,0,1,4,9, +0,17,0,10,1,95,70,111,110,116,65,119,101,115,111,109,101,54,70,114,101,101,45,83,111,108,105,100,70,111,110,116, +32,65,119,101,115,111,109,101,32,54,32,70,114,101,101,32,83,111,108,105,100,45,54,46,49,46,50,83,111,108,105,100, +86,101,114,115,105,111,110,32,55,54,57,46,48,49,57,53,51,49,50,53,32,40,70,111,110,116,32,65,119,101,115,111, +109,101,32,118,101,114,115,105,111,110,58,32,54,46,49,46,50,41,67,111,112,121,114,105,103,104,116,32,40,99,41,32, +70,111,110,116,32,65,119,101,115,111,109,101,70,111,110,116,32,65,119,101,115,111,109,101,32,54,32,70,114,101,101,32, +83,111,108,105,100,84,104,101,32,119,101,98,39,115,32,109,111,115,116,32,112,111,112,117,108,97,114,32,105,99,111,110, +32,115,101,116,32,97,110,100,32,116,111,111,108,107,105,116,46,70,111,110,116,32,65,119,101,115,111,109,101,32,54,32, +70,114,101,101,104,116,116,112,115,58,47,47,102,111,110,116,97,119,101,115,111,109,101,46,99,111,109,0,70,0,111,0, +110,0,116,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0,54,0,70,0,114,0,101,0,101,0,45,0,83,0, +111,0,108,0,105,0,100,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0, +32,0,54,0,32,0,70,0,114,0,101,0,101,0,32,0,83,0,111,0,108,0,105,0,100,0,45,0,54,0,46,0, +49,0,46,0,50,0,83,0,111,0,108,0,105,0,100,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0, +55,0,54,0,57,0,46,0,48,0,49,0,57,0,53,0,51,0,49,0,50,0,53,0,32,0,40,0,70,0,111,0, +110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0,32,0,118,0,101,0,114,0,115,0,105,0, +111,0,110,0,58,0,32,0,54,0,46,0,49,0,46,0,50,0,41,0,67,0,111,0,112,0,121,0,114,0,105,0, +103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0, +115,0,111,0,109,0,101,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0,101,0,115,0,111,0,109,0,101,0, +32,0,54,0,32,0,70,0,114,0,101,0,101,0,32,0,83,0,111,0,108,0,105,0,100,0,84,0,104,0,101,0, +32,0,119,0,101,0,98,0,39,0,115,0,32,0,109,0,111,0,115,0,116,0,32,0,112,0,111,0,112,0,117,0, +108,0,97,0,114,0,32,0,105,0,99,0,111,0,110,0,32,0,115,0,101,0,116,0,32,0,97,0,110,0,100,0, +32,0,116,0,111,0,111,0,108,0,107,0,105,0,116,0,46,0,70,0,111,0,110,0,116,0,32,0,65,0,119,0, +101,0,115,0,111,0,109,0,101,0,32,0,54,0,32,0,70,0,114,0,101,0,101,0,104,0,116,0,116,0,112,0, +115,0,58,0,47,0,47,0,102,0,111,0,110,0,116,0,97,0,119,0,101,0,115,0,111,0,109,0,101,0,46,0, +99,0,111,0,109,0,0,0,0,2,0,0,0,0,0,0,255,219,0,25,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,110,0,0,1,2,1,3,1,4,0,8,0,13,0,14,1,5,1,6,1,7,1,8, +1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,0,34,0,35,1,18,1,19,1,20,1,21,1,22, +1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38, +1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54, +1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70, +1,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86, +1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102, +1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118, +1,119,1,120,1,121,1,122,1,123,1,124,1,125,1,126,1,127,1,128,1,129,1,130,1,131,1,132,1,133,1,134, +1,135,1,136,1,137,1,138,1,139,1,140,1,141,1,142,1,143,1,144,1,145,1,146,1,147,1,148,1,149,1,150, +1,151,1,152,1,153,1,154,1,155,1,156,1,157,1,158,1,159,1,160,1,161,1,162,1,163,1,164,1,165,1,166, +1,167,1,168,1,169,1,170,1,171,1,172,1,173,1,174,1,175,1,176,1,177,1,178,1,179,1,180,1,181,1,182, +1,183,1,184,1,185,1,186,1,187,1,188,1,189,1,190,1,191,1,192,1,193,1,194,1,195,1,196,1,197,1,198, +1,199,1,200,1,201,1,202,1,203,1,204,1,205,1,206,1,207,1,208,1,209,1,210,1,211,1,212,1,213,1,214, +1,215,1,216,1,217,1,218,1,219,1,220,1,221,1,222,1,223,1,224,1,225,1,226,1,227,1,228,1,229,1,230, +1,231,1,232,1,233,1,234,1,235,1,236,1,237,1,238,1,239,1,240,1,241,1,242,1,243,1,244,1,245,1,246, +1,247,1,248,1,249,1,250,1,251,1,252,1,253,1,254,1,255,2,0,2,1,2,2,2,3,2,4,2,5,2,6, +2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22, +2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38, +2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54, +2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70, +2,71,2,72,2,73,2,74,2,75,2,76,2,77,2,78,2,79,2,80,2,81,2,82,2,83,2,84,2,85,2,86, +2,87,2,88,2,89,2,90,2,91,2,92,2,93,2,94,2,95,2,96,2,97,2,98,2,99,2,100,2,101,2,102, +2,103,2,104,2,105,2,106,2,107,2,108,2,109,2,110,2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118, +2,119,2,120,2,121,2,122,2,123,2,124,2,125,2,126,2,127,2,128,2,129,2,130,2,131,2,132,2,133,2,134, +2,135,2,136,2,137,2,138,2,139,2,140,2,141,2,142,2,143,2,144,2,145,2,146,2,147,2,148,2,149,2,150, +2,151,2,152,2,153,2,154,2,155,2,156,2,157,2,158,2,159,2,160,2,161,2,162,2,163,2,164,2,165,2,166, +2,167,2,168,2,169,2,170,2,171,2,172,2,173,2,174,2,175,2,176,2,177,2,178,2,179,2,180,2,181,2,182, +2,183,2,184,2,185,2,186,2,187,2,188,2,189,2,190,2,191,2,192,2,193,2,194,2,195,2,196,2,197,2,198, +2,199,2,200,2,201,2,202,2,203,2,204,2,205,2,206,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214, +2,215,2,216,2,217,2,218,2,219,2,220,2,221,2,222,2,223,2,224,2,225,2,226,2,227,2,228,2,229,2,230, +2,231,2,232,2,233,2,234,2,235,2,236,2,237,2,238,2,239,2,240,2,241,2,242,2,243,2,244,2,245,2,246, +2,247,2,248,2,249,2,250,2,251,2,252,2,253,2,254,2,255,3,0,3,1,3,2,3,3,3,4,3,5,3,6, +3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,3,22, +3,23,3,24,3,25,3,26,3,27,3,28,3,29,3,30,3,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38, +3,39,3,40,3,41,3,42,3,43,3,44,3,45,3,46,3,47,3,48,3,49,3,50,3,51,3,52,3,53,3,54, +3,55,3,56,3,57,3,58,3,59,3,60,3,61,3,62,3,63,3,64,3,65,3,66,3,67,3,68,3,69,3,70, +3,71,3,72,3,73,3,74,3,75,3,76,3,77,3,78,3,79,3,80,3,81,3,82,3,83,3,84,3,85,3,86, +3,87,3,88,3,89,3,90,3,91,3,92,3,93,3,94,3,95,3,96,3,97,3,98,3,99,3,100,3,101,3,102, +3,103,3,104,3,105,3,106,3,107,3,108,3,109,3,110,3,111,3,112,3,113,3,114,3,115,3,116,3,117,3,118, +3,119,3,120,3,121,3,122,3,123,3,124,3,125,3,126,3,127,3,128,3,129,3,130,3,131,3,132,3,133,3,134, +3,135,3,136,3,137,3,138,3,139,3,140,3,141,3,142,3,143,3,144,3,145,3,146,3,147,3,148,3,149,3,150, +3,151,3,152,3,153,3,154,3,155,3,156,3,157,3,158,3,159,3,160,3,161,3,162,3,163,3,164,3,165,3,166, +3,167,3,168,3,169,3,170,3,171,3,172,3,173,3,174,3,175,3,176,3,177,3,178,3,179,3,180,3,181,3,182, +3,183,3,184,3,185,3,186,3,187,3,188,3,189,3,190,3,191,3,192,3,193,3,194,3,195,3,196,3,197,3,198, +3,199,3,200,3,201,3,202,3,203,3,204,3,205,3,206,3,207,3,208,3,209,3,210,3,211,3,212,3,213,3,214, +3,215,3,216,3,217,3,218,3,219,3,220,3,221,3,222,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,230, +3,231,3,232,3,233,3,234,3,235,3,236,3,237,3,238,3,239,3,240,3,241,3,242,3,243,3,244,3,245,3,246, +3,247,3,248,3,249,3,250,3,251,3,252,3,253,3,254,3,255,4,0,4,1,4,2,4,3,4,4,4,5,4,6, +4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,4,22, +4,23,4,24,4,25,4,26,4,27,4,28,4,29,4,30,4,31,4,32,4,33,4,34,4,35,4,36,4,37,4,38, +4,39,4,40,4,41,4,42,4,43,4,44,4,45,4,46,4,47,4,48,4,49,4,50,4,51,4,52,4,53,4,54, +4,55,4,56,4,57,4,58,4,59,4,60,4,61,4,62,4,63,4,64,4,65,4,66,4,67,4,68,4,69,4,70, +4,71,4,72,4,73,4,74,4,75,4,76,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86, +4,87,4,88,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102, +4,103,4,104,4,105,4,106,4,107,4,108,4,109,4,110,4,111,4,112,4,113,4,114,4,115,4,116,4,117,4,118, +4,119,4,120,4,121,4,122,4,123,4,124,4,125,4,126,4,127,4,128,4,129,4,130,4,131,4,132,4,133,4,134, +4,135,4,136,4,137,4,138,4,139,4,140,4,141,4,142,4,143,4,144,4,145,4,146,4,147,4,148,4,149,4,150, +4,151,4,152,4,153,4,154,4,155,4,156,4,157,4,158,4,159,4,160,4,161,4,162,4,163,4,164,4,165,4,166, +4,167,4,168,4,169,4,170,4,171,4,172,4,173,4,174,4,175,4,176,4,177,4,178,4,179,4,180,4,181,4,182, +4,183,4,184,4,185,4,186,4,187,4,188,4,189,4,190,4,191,4,192,4,193,4,194,4,195,4,196,4,197,4,198, +4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214, +4,215,4,216,4,217,4,218,4,219,4,220,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230, +4,231,4,232,4,233,4,234,4,235,4,236,4,237,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246, +4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,1,5,2,5,3,5,4,5,5,5,6, +5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22, +5,23,5,24,5,25,5,26,5,27,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38, +5,39,5,40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,5,53,5,54, +5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70, +5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,82,5,83,5,84,5,85,5,86, +5,87,5,88,5,89,5,90,5,91,5,92,5,93,5,94,5,95,5,96,5,97,5,98,5,99,5,100,5,101,5,102, +5,103,5,104,5,105,5,106,5,107,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118, +5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134, +5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150, +5,151,5,152,5,153,5,154,5,155,5,156,5,157,5,158,5,159,5,160,5,161,5,162,5,163,5,164,5,165,5,166, +5,167,5,168,5,169,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182, +5,183,5,184,5,185,5,186,5,187,5,188,5,189,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198, +5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214, +5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,230, +5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246, +5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,5,255,6,0,6,1,6,2,6,3,6,4,6,5,6,6, +6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,6,18,6,19,6,20,6,21,6,22, +6,23,6,24,6,25,6,26,6,27,6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38, +6,39,6,40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,6,53,6,54, +6,55,6,56,6,57,6,58,6,59,6,60,6,61,6,62,6,63,6,64,6,65,6,66,6,67,6,68,6,69,6,70, +6,71,6,72,6,73,6,74,6,75,6,76,6,77,6,78,6,79,6,80,6,81,6,82,6,83,6,84,6,85,6,86, +6,87,6,88,6,89,6,90,6,91,6,92,6,93,6,94,6,95,6,96,6,97,6,98,6,99,6,100,6,101,6,102, +6,103,6,104,6,105,11,101,120,99,108,97,109,97,116,105,111,110,7,104,97,115,104,116,97,103,11,100,111,108,108,97, +114,45,115,105,103,110,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,9,108,101,115,115,45, +116,104,97,110,6,101,113,117,97,108,115,12,103,114,101,97,116,101,114,45,116,104,97,110,1,97,1,98,1,99,1,100, +1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116, +1,117,1,118,1,119,1,120,1,121,1,122,6,102,97,117,99,101,116,11,102,97,117,99,101,116,45,100,114,105,112,20, +104,111,117,115,101,45,99,104,105,109,110,101,121,45,119,105,110,100,111,119,12,104,111,117,115,101,45,115,105,103,110,97, +108,22,116,101,109,112,101,114,97,116,117,114,101,45,97,114,114,111,119,45,100,111,119,110,20,116,101,109,112,101,114,97, +116,117,114,101,45,97,114,114,111,119,45,117,112,7,116,114,97,105,108,101,114,8,98,97,99,116,101,114,105,97,9,98, +97,99,116,101,114,105,117,109,10,98,111,120,45,116,105,115,115,117,101,20,104,97,110,100,45,104,111,108,100,105,110,103, +45,109,101,100,105,99,97,108,13,104,97,110,100,45,115,112,97,114,107,108,101,115,13,104,97,110,100,115,45,98,117,98, +98,108,101,115,22,104,97,110,100,115,104,97,107,101,45,115,105,109,112,108,101,45,115,108,97,115,104,15,104,97,110,100, +115,104,97,107,101,45,115,108,97,115,104,15,104,101,97,100,45,115,105,100,101,45,99,111,117,103,104,21,104,101,97,100, +45,115,105,100,101,45,99,111,117,103,104,45,115,108,97,115,104,14,104,101,97,100,45,115,105,100,101,45,109,97,115,107, +15,104,101,97,100,45,115,105,100,101,45,118,105,114,117,115,18,104,111,117,115,101,45,99,104,105,109,110,101,121,45,117, +115,101,114,12,104,111,117,115,101,45,108,97,112,116,111,112,11,108,117,110,103,115,45,118,105,114,117,115,13,112,101,111, +112,108,101,45,97,114,114,111,119,115,11,112,108,97,110,101,45,115,108,97,115,104,12,112,117,109,112,45,109,101,100,105, +99,97,108,9,112,117,109,112,45,115,111,97,112,12,115,104,105,101,108,100,45,118,105,114,117,115,4,115,105,110,107,4, +115,111,97,112,12,115,116,111,112,119,97,116,99,104,45,50,48,10,115,104,111,112,45,115,108,97,115,104,11,115,116,111, +114,101,45,115,108,97,115,104,18,116,111,105,108,101,116,45,112,97,112,101,114,45,115,108,97,115,104,11,117,115,101,114, +115,45,115,108,97,115,104,5,118,105,114,117,115,11,118,105,114,117,115,45,115,108,97,115,104,7,118,105,114,117,115,101, +115,4,118,101,115,116,12,118,101,115,116,45,112,97,116,99,104,101,115,16,97,114,114,111,119,45,116,114,101,110,100,45, +100,111,119,110,14,97,114,114,111,119,45,116,114,101,110,100,45,117,112,21,97,114,114,111,119,45,117,112,45,102,114,111, +109,45,98,114,97,99,107,101,116,12,97,117,115,116,114,97,108,45,115,105,103,110,9,98,97,104,116,45,115,105,103,110, +12,98,105,116,99,111,105,110,45,115,105,103,110,14,98,111,108,116,45,108,105,103,104,116,110,105,110,103,13,98,111,111, +107,45,98,111,111,107,109,97,114,107,13,99,97,109,101,114,97,45,114,111,116,97,116,101,9,99,101,100,105,45,115,105, +103,110,12,99,104,97,114,116,45,99,111,108,117,109,110,11,99,104,97,114,116,45,103,97,110,116,116,12,99,108,97,112, +112,101,114,98,111,97,114,100,6,99,108,111,118,101,114,12,99,111,100,101,45,99,111,109,112,97,114,101,9,99,111,100, +101,45,102,111,114,107,17,99,111,100,101,45,112,117,108,108,45,114,101,113,117,101,115,116,10,99,111,108,111,110,45,115, +105,103,110,13,99,114,117,122,101,105,114,111,45,115,105,103,110,7,100,105,115,112,108,97,121,9,100,111,110,103,45,115, +105,103,110,8,101,108,101,118,97,116,111,114,19,102,105,108,116,101,114,45,99,105,114,99,108,101,45,120,109,97,114,107, +11,102,108,111,114,105,110,45,115,105,103,110,13,102,111,108,100,101,114,45,99,108,111,115,101,100,10,102,114,97,110,99, +45,115,105,103,110,12,103,117,97,114,97,110,105,45,115,105,103,110,3,103,117,110,14,104,97,110,100,115,45,99,108,97, +112,112,105,110,103,10,104,111,117,115,101,45,117,115,101,114,17,105,110,100,105,97,110,45,114,117,112,101,101,45,115,105, +103,110,8,107,105,112,45,115,105,103,110,9,108,97,114,105,45,115,105,103,110,13,108,105,116,101,99,111,105,110,45,115, +105,103,110,10,109,97,110,97,116,45,115,105,103,110,9,109,97,115,107,45,102,97,99,101,9,109,105,108,108,45,115,105, +103,110,11,109,111,110,101,121,45,98,105,108,108,115,10,110,97,105,114,97,45,115,105,103,110,6,110,111,116,100,101,102, +8,112,97,110,111,114,97,109,97,11,112,101,115,101,116,97,45,115,105,103,110,9,112,101,115,111,45,115,105,103,110,8, +112,108,97,110,101,45,117,112,11,114,117,112,105,97,104,45,115,105,103,110,6,115,116,97,105,114,115,8,116,105,109,101, +108,105,110,101,11,116,114,117,99,107,45,102,114,111,110,116,17,116,117,114,107,105,115,104,45,108,105,114,97,45,115,105, +103,110,5,118,97,117,108,116,19,119,97,110,100,45,109,97,103,105,99,45,115,112,97,114,107,108,101,115,9,119,104,101, +97,116,45,97,119,110,15,119,104,101,101,108,99,104,97,105,114,45,109,111,118,101,9,98,111,119,108,45,114,105,99,101, +15,112,101,114,115,111,110,45,112,114,101,103,110,97,110,116,13,104,111,117,115,101,45,99,104,105,109,110,101,121,11,104, +111,117,115,101,45,99,114,97,99,107,13,104,111,117,115,101,45,109,101,100,105,99,97,108,9,99,101,110,116,45,115,105, +103,110,10,112,108,117,115,45,109,105,110,117,115,8,115,97,105,108,98,111,97,116,7,115,101,99,116,105,111,110,6,115, +104,114,105,109,112,19,98,114,97,122,105,108,105,97,110,45,114,101,97,108,45,115,105,103,110,12,99,104,97,114,116,45, +115,105,109,112,108,101,12,100,105,97,103,114,97,109,45,110,101,120,116,19,100,105,97,103,114,97,109,45,112,114,101,100, +101,99,101,115,115,111,114,17,100,105,97,103,114,97,109,45,115,117,99,99,101,115,115,111,114,13,101,97,114,116,104,45, +111,99,101,97,110,105,97,9,98,117,103,45,115,108,97,115,104,16,102,105,108,101,45,99,105,114,99,108,101,45,112,108, +117,115,9,115,104,111,112,45,108,111,99,107,11,118,105,114,117,115,45,99,111,118,105,100,17,118,105,114,117,115,45,99, +111,118,105,100,45,115,108,97,115,104,19,97,110,99,104,111,114,45,99,105,114,99,108,101,45,99,104,101,99,107,25,97, +110,99,104,111,114,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,19,97,110,99,104,111,114,45, +99,105,114,99,108,101,45,120,109,97,114,107,11,97,110,99,104,111,114,45,108,111,99,107,25,97,114,114,111,119,45,100, +111,119,110,45,117,112,45,97,99,114,111,115,115,45,108,105,110,101,18,97,114,114,111,119,45,100,111,119,110,45,117,112, +45,108,111,99,107,19,97,114,114,111,119,45,114,105,103,104,116,45,116,111,45,99,105,116,121,26,97,114,114,111,119,45, +117,112,45,102,114,111,109,45,103,114,111,117,110,100,45,119,97,116,101,114,24,97,114,114,111,119,45,117,112,45,102,114, +111,109,45,119,97,116,101,114,45,112,117,109,112,19,97,114,114,111,119,45,117,112,45,114,105,103,104,116,45,100,111,116, +115,19,97,114,114,111,119,115,45,100,111,119,110,45,116,111,45,108,105,110,101,21,97,114,114,111,119,115,45,100,111,119, +110,45,116,111,45,112,101,111,112,108,101,25,97,114,114,111,119,115,45,108,101,102,116,45,114,105,103,104,116,45,116,111, +45,108,105,110,101,11,97,114,114,111,119,115,45,115,112,105,110,24,97,114,114,111,119,115,45,115,112,108,105,116,45,117, +112,45,97,110,100,45,108,101,102,116,16,97,114,114,111,119,115,45,116,111,45,99,105,114,99,108,101,13,97,114,114,111, +119,115,45,116,111,45,100,111,116,13,97,114,114,111,119,115,45,116,111,45,101,121,101,17,97,114,114,111,119,115,45,116, +117,114,110,45,114,105,103,104,116,19,97,114,114,111,119,115,45,116,117,114,110,45,116,111,45,100,111,116,115,17,97,114, +114,111,119,115,45,117,112,45,116,111,45,108,105,110,101,9,98,111,114,101,45,104,111,108,101,14,98,111,116,116,108,101, +45,100,114,111,112,108,101,116,12,98,111,116,116,108,101,45,119,97,116,101,114,9,98,111,119,108,45,102,111,111,100,13, +98,111,120,101,115,45,112,97,99,107,105,110,103,6,98,114,105,100,103,101,19,98,114,105,100,103,101,45,99,105,114,99, +108,101,45,99,104,101,99,107,25,98,114,105,100,103,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105, +111,110,19,98,114,105,100,103,101,45,99,105,114,99,108,101,45,120,109,97,114,107,11,98,114,105,100,103,101,45,108,111, +99,107,12,98,114,105,100,103,101,45,119,97,116,101,114,6,98,117,99,107,101,116,4,98,117,103,115,27,98,117,105,108, +100,105,110,103,45,99,105,114,99,108,101,45,97,114,114,111,119,45,114,105,103,104,116,21,98,117,105,108,100,105,110,103, +45,99,105,114,99,108,101,45,99,104,101,99,107,27,98,117,105,108,100,105,110,103,45,99,105,114,99,108,101,45,101,120, +99,108,97,109,97,116,105,111,110,21,98,117,105,108,100,105,110,103,45,99,105,114,99,108,101,45,120,109,97,114,107,13, +98,117,105,108,100,105,110,103,45,102,108,97,103,13,98,117,105,108,100,105,110,103,45,108,111,99,107,12,98,117,105,108, +100,105,110,103,45,110,103,111,15,98,117,105,108,100,105,110,103,45,115,104,105,101,108,100,11,98,117,105,108,100,105,110, +103,45,117,110,13,98,117,105,108,100,105,110,103,45,117,115,101,114,14,98,117,105,108,100,105,110,103,45,119,104,101,97, +116,5,98,117,114,115,116,6,99,97,114,45,111,110,10,99,97,114,45,116,117,110,110,101,108,11,99,104,105,108,100,45, +114,105,102,108,101,8,99,104,105,108,100,114,101,110,12,99,105,114,99,108,101,45,110,111,100,101,115,18,99,108,105,112, +98,111,97,114,100,45,113,117,101,115,116,105,111,110,19,99,108,111,117,100,45,115,104,111,119,101,114,115,45,119,97,116, +101,114,8,99,111,109,112,117,116,101,114,13,99,117,98,101,115,45,115,116,97,99,107,101,100,21,101,110,118,101,108,111, +112,101,45,99,105,114,99,108,101,45,99,104,101,99,107,9,101,120,112,108,111,115,105,111,110,5,102,101,114,114,121,23, +102,105,108,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,17,102,105,108,101,45,99,105,114, +99,108,101,45,109,105,110,117,115,20,102,105,108,101,45,99,105,114,99,108,101,45,113,117,101,115,116,105,111,110,11,102, +105,108,101,45,115,104,105,101,108,100,11,102,105,114,101,45,98,117,114,110,101,114,9,102,105,115,104,45,102,105,110,115, +10,102,108,97,115,107,45,118,105,97,108,11,103,108,97,115,115,45,119,97,116,101,114,19,103,108,97,115,115,45,119,97, +116,101,114,45,100,114,111,112,108,101,116,19,103,114,111,117,112,45,97,114,114,111,119,115,45,114,111,116,97,116,101,17, +104,97,110,100,45,104,111,108,100,105,110,103,45,104,97,110,100,9,104,97,110,100,99,117,102,102,115,11,104,97,110,100, +115,45,98,111,117,110,100,19,104,97,110,100,115,45,104,111,108,100,105,110,103,45,99,104,105,108,100,20,104,97,110,100, +115,45,104,111,108,100,105,110,103,45,99,105,114,99,108,101,17,104,101,97,114,116,45,99,105,114,99,108,101,45,98,111, +108,116,18,104,101,97,114,116,45,99,105,114,99,108,101,45,99,104,101,99,107,24,104,101,97,114,116,45,99,105,114,99, +108,101,45,101,120,99,108,97,109,97,116,105,111,110,18,104,101,97,114,116,45,99,105,114,99,108,101,45,109,105,110,117, +115,17,104,101,97,114,116,45,99,105,114,99,108,101,45,112,108,117,115,18,104,101,97,114,116,45,99,105,114,99,108,101, +45,120,109,97,114,107,17,104,101,108,105,99,111,112,116,101,114,45,115,121,109,98,111,108,9,104,101,108,109,101,116,45, +117,110,14,104,105,108,108,45,97,118,97,108,97,110,99,104,101,14,104,105,108,108,45,114,111,99,107,115,108,105,100,101, +18,104,111,117,115,101,45,99,105,114,99,108,101,45,99,104,101,99,107,24,104,111,117,115,101,45,99,105,114,99,108,101, +45,101,120,99,108,97,109,97,116,105,111,110,18,104,111,117,115,101,45,99,105,114,99,108,101,45,120,109,97,114,107,10, +104,111,117,115,101,45,102,105,114,101,10,104,111,117,115,101,45,102,108,97,103,17,104,111,117,115,101,45,102,108,111,111, +100,45,119,97,116,101,114,36,104,111,117,115,101,45,102,108,111,111,100,45,119,97,116,101,114,45,99,105,114,99,108,101, +45,97,114,114,111,119,45,114,105,103,104,116,10,104,111,117,115,101,45,108,111,99,107,26,104,111,117,115,101,45,109,101, +100,105,99,97,108,45,99,105,114,99,108,101,45,99,104,101,99,107,32,104,111,117,115,101,45,109,101,100,105,99,97,108, +45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,26,104,111,117,115,101,45,109,101,100,105,99,97, +108,45,99,105,114,99,108,101,45,120,109,97,114,107,18,104,111,117,115,101,45,109,101,100,105,99,97,108,45,102,108,97, +103,13,104,111,117,115,101,45,116,115,117,110,97,109,105,3,106,97,114,9,106,97,114,45,119,104,101,97,116,14,106,101, +116,45,102,105,103,104,116,101,114,45,117,112,13,106,117,103,45,100,101,116,101,114,103,101,110,116,11,107,105,116,99,104, +101,110,45,115,101,116,12,108,97,110,100,45,109,105,110,101,45,111,110,13,108,97,110,100,109,97,114,107,45,102,108,97, +103,11,108,97,112,116,111,112,45,102,105,108,101,13,108,105,110,101,115,45,108,101,97,110,105,110,103,17,108,111,99,97, +116,105,111,110,45,112,105,110,45,108,111,99,107,6,108,111,99,117,115,116,28,109,97,103,110,105,102,121,105,110,103,45, +103,108,97,115,115,45,97,114,114,111,119,45,114,105,103,104,116,22,109,97,103,110,105,102,121,105,110,103,45,103,108,97, +115,115,45,99,104,97,114,116,20,109,97,114,115,45,97,110,100,45,118,101,110,117,115,45,98,117,114,115,116,15,109,97, +115,107,45,118,101,110,116,105,108,97,116,111,114,15,109,97,116,116,114,101,115,115,45,112,105,108,108,111,119,12,109,111, +98,105,108,101,45,114,101,116,114,111,19,109,111,110,101,121,45,98,105,108,108,45,116,114,97,110,115,102,101,114,19,109, +111,110,101,121,45,98,105,108,108,45,116,114,101,110,100,45,117,112,16,109,111,110,101,121,45,98,105,108,108,45,119,104, +101,97,116,8,109,111,115,113,117,105,116,111,12,109,111,115,113,117,105,116,111,45,110,101,116,5,109,111,117,110,100,13, +109,111,117,110,116,97,105,110,45,99,105,116,121,12,109,111,117,110,116,97,105,110,45,115,117,110,8,111,105,108,45,119, +101,108,108,12,112,101,111,112,108,101,45,103,114,111,117,112,11,112,101,111,112,108,101,45,108,105,110,101,14,112,101,111, +112,108,101,45,112,117,108,108,105,110,103,14,112,101,111,112,108,101,45,114,111,98,98,101,114,121,11,112,101,111,112,108, +101,45,114,111,111,102,25,112,101,114,115,111,110,45,97,114,114,111,119,45,100,111,119,110,45,116,111,45,108,105,110,101, +25,112,101,114,115,111,110,45,97,114,114,111,119,45,117,112,45,102,114,111,109,45,108,105,110,101,20,112,101,114,115,111, +110,45,98,114,101,97,115,116,102,101,101,100,105,110,103,12,112,101,114,115,111,110,45,98,117,114,115,116,11,112,101,114, +115,111,110,45,99,97,110,101,17,112,101,114,115,111,110,45,99,104,97,108,107,98,111,97,114,100,19,112,101,114,115,111, +110,45,99,105,114,99,108,101,45,99,104,101,99,107,25,112,101,114,115,111,110,45,99,105,114,99,108,101,45,101,120,99, +108,97,109,97,116,105,111,110,19,112,101,114,115,111,110,45,99,105,114,99,108,101,45,109,105,110,117,115,18,112,101,114, +115,111,110,45,99,105,114,99,108,101,45,112,108,117,115,22,112,101,114,115,111,110,45,99,105,114,99,108,101,45,113,117, +101,115,116,105,111,110,19,112,101,114,115,111,110,45,99,105,114,99,108,101,45,120,109,97,114,107,18,112,101,114,115,111, +110,45,100,114,101,115,115,45,98,117,114,115,116,15,112,101,114,115,111,110,45,100,114,111,119,110,105,110,103,14,112,101, +114,115,111,110,45,102,97,108,108,105,110,103,20,112,101,114,115,111,110,45,102,97,108,108,105,110,103,45,98,117,114,115, +116,17,112,101,114,115,111,110,45,104,97,108,102,45,100,114,101,115,115,16,112,101,114,115,111,110,45,104,97,114,97,115, +115,105,110,103,24,112,101,114,115,111,110,45,109,105,108,105,116,97,114,121,45,112,111,105,110,116,105,110,103,21,112,101, +114,115,111,110,45,109,105,108,105,116,97,114,121,45,114,105,102,108,101,25,112,101,114,115,111,110,45,109,105,108,105,116, +97,114,121,45,116,111,45,112,101,114,115,111,110,11,112,101,114,115,111,110,45,114,97,121,115,12,112,101,114,115,111,110, +45,114,105,102,108,101,14,112,101,114,115,111,110,45,115,104,101,108,116,101,114,30,112,101,114,115,111,110,45,119,97,108, +107,105,110,103,45,97,114,114,111,119,45,108,111,111,112,45,108,101,102,116,26,112,101,114,115,111,110,45,119,97,108,107, +105,110,103,45,97,114,114,111,119,45,114,105,103,104,116,38,112,101,114,115,111,110,45,119,97,108,107,105,110,103,45,100, +97,115,104,101,100,45,108,105,110,101,45,97,114,114,111,119,45,114,105,103,104,116,22,112,101,114,115,111,110,45,119,97, +108,107,105,110,103,45,108,117,103,103,97,103,101,18,112,108,97,110,101,45,99,105,114,99,108,101,45,99,104,101,99,107, +24,112,108,97,110,101,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,18,112,108,97,110,101,45, +99,105,114,99,108,101,45,120,109,97,114,107,10,112,108,97,110,101,45,108,111,99,107,11,112,108,97,116,101,45,119,104, +101,97,116,16,112,108,117,103,45,99,105,114,99,108,101,45,98,111,108,116,17,112,108,117,103,45,99,105,114,99,108,101, +45,99,104,101,99,107,23,112,108,117,103,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,17,112, +108,117,103,45,99,105,114,99,108,101,45,109,105,110,117,115,16,112,108,117,103,45,99,105,114,99,108,101,45,112,108,117, +115,17,112,108,117,103,45,99,105,114,99,108,101,45,120,109,97,114,107,12,114,97,110,107,105,110,103,45,115,116,97,114, +12,114,111,97,100,45,98,97,114,114,105,101,114,11,114,111,97,100,45,98,114,105,100,103,101,17,114,111,97,100,45,99, +105,114,99,108,101,45,99,104,101,99,107,23,114,111,97,100,45,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116, +105,111,110,17,114,111,97,100,45,99,105,114,99,108,101,45,120,109,97,114,107,9,114,111,97,100,45,108,111,99,107,11, +114,111,97,100,45,115,112,105,107,101,115,3,114,117,103,10,115,97,99,107,45,120,109,97,114,107,19,115,99,104,111,111, +108,45,99,105,114,99,108,101,45,99,104,101,99,107,25,115,99,104,111,111,108,45,99,105,114,99,108,101,45,101,120,99, +108,97,109,97,116,105,111,110,19,115,99,104,111,111,108,45,99,105,114,99,108,101,45,120,109,97,114,107,11,115,99,104, +111,111,108,45,102,108,97,103,11,115,99,104,111,111,108,45,108,111,99,107,13,115,104,101,101,116,45,112,108,97,115,116, +105,99,10,115,104,105,101,108,100,45,99,97,116,10,115,104,105,101,108,100,45,100,111,103,12,115,104,105,101,108,100,45, +104,101,97,114,116,10,115,113,117,97,114,101,45,110,102,105,22,115,113,117,97,114,101,45,112,101,114,115,111,110,45,99, +111,110,102,105,110,101,100,12,115,113,117,97,114,101,45,118,105,114,117,115,11,115,116,97,102,102,45,115,110,97,107,101, +14,115,117,110,45,112,108,97,110,116,45,119,105,108,116,4,116,97,114,112,12,116,97,114,112,45,100,114,111,112,108,101, +116,4,116,101,110,116,23,116,101,110,116,45,97,114,114,111,119,45,100,111,119,110,45,116,111,45,108,105,110,101,21,116, +101,110,116,45,97,114,114,111,119,45,108,101,102,116,45,114,105,103,104,116,20,116,101,110,116,45,97,114,114,111,119,45, +116,117,114,110,45,108,101,102,116,16,116,101,110,116,45,97,114,114,111,119,115,45,100,111,119,110,5,116,101,110,116,115, +15,116,111,105,108,101,116,45,112,111,114,116,97,98,108,101,16,116,111,105,108,101,116,115,45,112,111,114,116,97,98,108, +101,10,116,111,119,101,114,45,99,101,108,108,17,116,111,119,101,114,45,111,98,115,101,114,118,97,116,105,111,110,9,116, +114,101,101,45,99,105,116,121,6,116,114,111,119,101,108,13,116,114,111,119,101,108,45,98,114,105,99,107,115,17,116,114, +117,99,107,45,97,114,114,111,119,45,114,105,103,104,116,13,116,114,117,99,107,45,100,114,111,112,108,101,116,11,116,114, +117,99,107,45,102,105,101,108,100,14,116,114,117,99,107,45,102,105,101,108,100,45,117,110,11,116,114,117,99,107,45,112, +108,97,110,101,19,117,115,101,114,115,45,98,101,116,119,101,101,110,45,108,105,110,101,115,10,117,115,101,114,115,45,108, +105,110,101,10,117,115,101,114,115,45,114,97,121,115,15,117,115,101,114,115,45,114,101,99,116,97,110,103,108,101,16,117, +115,101,114,115,45,118,105,101,119,102,105,110,100,101,114,17,118,105,97,108,45,99,105,114,99,108,101,45,99,104,101,99, +107,10,118,105,97,108,45,118,105,114,117,115,28,119,104,101,97,116,45,97,119,110,45,99,105,114,99,108,101,45,101,120, +99,108,97,109,97,116,105,111,110,4,119,111,114,109,12,120,109,97,114,107,115,45,108,105,110,101,115,11,99,104,105,108, +100,45,100,114,101,115,115,14,99,104,105,108,100,45,114,101,97,99,104,105,110,103,17,102,105,108,101,45,99,105,114,99, +108,101,45,99,104,101,99,107,17,102,105,108,101,45,99,105,114,99,108,101,45,120,109,97,114,107,21,112,101,114,115,111, +110,45,116,104,114,111,117,103,104,45,119,105,110,100,111,119,10,112,108,97,110,116,45,119,105,108,116,7,115,116,97,112, +108,101,114,10,116,114,97,105,110,45,116,114,97,109,19,109,97,114,116,105,110,105,45,103,108,97,115,115,45,101,109,112, +116,121,5,109,117,115,105,99,16,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,5,104,101,97,114,116,4, +115,116,97,114,4,117,115,101,114,4,102,105,108,109,17,116,97,98,108,101,45,99,101,108,108,115,45,108,97,114,103,101, +11,116,97,98,108,101,45,99,101,108,108,115,10,116,97,98,108,101,45,108,105,115,116,5,99,104,101,99,107,5,120,109, +97,114,107,21,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,45,112,108,117,115,22,109,97,103,110,105,102, +121,105,110,103,45,103,108,97,115,115,45,109,105,110,117,115,9,112,111,119,101,114,45,111,102,102,6,115,105,103,110,97, +108,4,103,101,97,114,5,104,111,117,115,101,5,99,108,111,99,107,4,114,111,97,100,8,100,111,119,110,108,111,97,100, +5,105,110,98,111,120,18,97,114,114,111,119,45,114,111,116,97,116,101,45,114,105,103,104,116,13,97,114,114,111,119,115, +45,114,111,116,97,116,101,14,114,101,99,116,97,110,103,108,101,45,108,105,115,116,4,108,111,99,107,4,102,108,97,103, +10,104,101,97,100,112,104,111,110,101,115,10,118,111,108,117,109,101,45,111,102,102,10,118,111,108,117,109,101,45,108,111, +119,11,118,111,108,117,109,101,45,104,105,103,104,6,113,114,99,111,100,101,7,98,97,114,99,111,100,101,3,116,97,103, +4,116,97,103,115,4,98,111,111,107,8,98,111,111,107,109,97,114,107,5,112,114,105,110,116,6,99,97,109,101,114,97, +4,102,111,110,116,4,98,111,108,100,6,105,116,97,108,105,99,11,116,101,120,116,45,104,101,105,103,104,116,10,116,101, +120,116,45,119,105,100,116,104,10,97,108,105,103,110,45,108,101,102,116,12,97,108,105,103,110,45,99,101,110,116,101,114, +11,97,108,105,103,110,45,114,105,103,104,116,13,97,108,105,103,110,45,106,117,115,116,105,102,121,4,108,105,115,116,7, +111,117,116,100,101,110,116,6,105,110,100,101,110,116,5,118,105,100,101,111,5,105,109,97,103,101,12,108,111,99,97,116, +105,111,110,45,112,105,110,18,99,105,114,99,108,101,45,104,97,108,102,45,115,116,114,111,107,101,7,100,114,111,112,108, +101,116,13,112,101,110,45,116,111,45,115,113,117,97,114,101,25,97,114,114,111,119,115,45,117,112,45,100,111,119,110,45, +108,101,102,116,45,114,105,103,104,116,13,98,97,99,107,119,97,114,100,45,115,116,101,112,13,98,97,99,107,119,97,114, +100,45,102,97,115,116,8,98,97,99,107,119,97,114,100,4,112,108,97,121,5,112,97,117,115,101,4,115,116,111,112,7, +102,111,114,119,97,114,100,12,102,111,114,119,97,114,100,45,102,97,115,116,12,102,111,114,119,97,114,100,45,115,116,101, +112,5,101,106,101,99,116,12,99,104,101,118,114,111,110,45,108,101,102,116,13,99,104,101,118,114,111,110,45,114,105,103, +104,116,11,99,105,114,99,108,101,45,112,108,117,115,12,99,105,114,99,108,101,45,109,105,110,117,115,12,99,105,114,99, +108,101,45,120,109,97,114,107,12,99,105,114,99,108,101,45,99,104,101,99,107,15,99,105,114,99,108,101,45,113,117,101, +115,116,105,111,110,11,99,105,114,99,108,101,45,105,110,102,111,10,99,114,111,115,115,104,97,105,114,115,3,98,97,110, +10,97,114,114,111,119,45,108,101,102,116,11,97,114,114,111,119,45,114,105,103,104,116,8,97,114,114,111,119,45,117,112, +10,97,114,114,111,119,45,100,111,119,110,5,115,104,97,114,101,6,101,120,112,97,110,100,8,99,111,109,112,114,101,115, +115,5,109,105,110,117,115,18,99,105,114,99,108,101,45,101,120,99,108,97,109,97,116,105,111,110,4,103,105,102,116,4, +108,101,97,102,4,102,105,114,101,3,101,121,101,9,101,121,101,45,115,108,97,115,104,20,116,114,105,97,110,103,108,101, +45,101,120,99,108,97,109,97,116,105,111,110,5,112,108,97,110,101,13,99,97,108,101,110,100,97,114,45,100,97,121,115, +7,115,104,117,102,102,108,101,7,99,111,109,109,101,110,116,6,109,97,103,110,101,116,10,99,104,101,118,114,111,110,45, +117,112,12,99,104,101,118,114,111,110,45,100,111,119,110,7,114,101,116,119,101,101,116,13,99,97,114,116,45,115,104,111, +112,112,105,110,103,6,102,111,108,100,101,114,11,102,111,108,100,101,114,45,111,112,101,110,14,97,114,114,111,119,115,45, +117,112,45,100,111,119,110,17,97,114,114,111,119,115,45,108,101,102,116,45,114,105,103,104,116,9,99,104,97,114,116,45, +98,97,114,12,99,97,109,101,114,97,45,114,101,116,114,111,3,107,101,121,5,103,101,97,114,115,8,99,111,109,109,101, +110,116,115,9,115,116,97,114,45,104,97,108,102,24,97,114,114,111,119,45,114,105,103,104,116,45,102,114,111,109,45,98, +114,97,99,107,101,116,9,116,104,117,109,98,116,97,99,107,26,97,114,114,111,119,45,117,112,45,114,105,103,104,116,45, +102,114,111,109,45,115,113,117,97,114,101,22,97,114,114,111,119,45,114,105,103,104,116,45,116,111,45,98,114,97,99,107, +101,116,6,116,114,111,112,104,121,6,117,112,108,111,97,100,5,108,101,109,111,110,5,112,104,111,110,101,12,115,113,117, +97,114,101,45,112,104,111,110,101,6,117,110,108,111,99,107,11,99,114,101,100,105,116,45,99,97,114,100,3,114,115,115, +10,104,97,114,100,45,100,114,105,118,101,8,98,117,108,108,104,111,114,110,11,99,101,114,116,105,102,105,99,97,116,101, +16,104,97,110,100,45,112,111,105,110,116,45,114,105,103,104,116,15,104,97,110,100,45,112,111,105,110,116,45,108,101,102, +116,13,104,97,110,100,45,112,111,105,110,116,45,117,112,15,104,97,110,100,45,112,111,105,110,116,45,100,111,119,110,17, +99,105,114,99,108,101,45,97,114,114,111,119,45,108,101,102,116,18,99,105,114,99,108,101,45,97,114,114,111,119,45,114, +105,103,104,116,15,99,105,114,99,108,101,45,97,114,114,111,119,45,117,112,17,99,105,114,99,108,101,45,97,114,114,111, +119,45,100,111,119,110,5,103,108,111,98,101,6,119,114,101,110,99,104,10,108,105,115,116,45,99,104,101,99,107,6,102, +105,108,116,101,114,9,98,114,105,101,102,99,97,115,101,18,117,112,45,100,111,119,110,45,108,101,102,116,45,114,105,103, +104,116,5,117,115,101,114,115,4,108,105,110,107,5,99,108,111,117,100,5,102,108,97,115,107,8,115,99,105,115,115,111, +114,115,4,99,111,112,121,9,112,97,112,101,114,99,108,105,112,11,102,108,111,112,112,121,45,100,105,115,107,6,115,113, +117,97,114,101,4,98,97,114,115,7,108,105,115,116,45,117,108,7,108,105,115,116,45,111,108,13,115,116,114,105,107,101, +116,104,114,111,117,103,104,9,117,110,100,101,114,108,105,110,101,5,116,97,98,108,101,10,119,97,110,100,45,109,97,103, +105,99,5,116,114,117,99,107,10,109,111,110,101,121,45,98,105,108,108,10,99,97,114,101,116,45,100,111,119,110,8,99, +97,114,101,116,45,117,112,10,99,97,114,101,116,45,108,101,102,116,11,99,97,114,101,116,45,114,105,103,104,116,13,116, +97,98,108,101,45,99,111,108,117,109,110,115,4,115,111,114,116,9,115,111,114,116,45,100,111,119,110,7,115,111,114,116, +45,117,112,8,101,110,118,101,108,111,112,101,17,97,114,114,111,119,45,114,111,116,97,116,101,45,108,101,102,116,5,103, +97,118,101,108,4,98,111,108,116,7,115,105,116,101,109,97,112,8,117,109,98,114,101,108,108,97,5,112,97,115,116,101, +9,108,105,103,104,116,98,117,108,98,22,97,114,114,111,119,45,114,105,103,104,116,45,97,114,114,111,119,45,108,101,102, +116,16,99,108,111,117,100,45,97,114,114,111,119,45,100,111,119,110,14,99,108,111,117,100,45,97,114,114,111,119,45,117, +112,11,117,115,101,114,45,100,111,99,116,111,114,11,115,116,101,116,104,111,115,99,111,112,101,8,115,117,105,116,99,97, +115,101,4,98,101,108,108,10,109,117,103,45,115,97,117,99,101,114,8,104,111,115,112,105,116,97,108,13,116,114,117,99, +107,45,109,101,100,105,99,97,108,16,115,117,105,116,99,97,115,101,45,109,101,100,105,99,97,108,11,106,101,116,45,102, +105,103,104,116,101,114,14,98,101,101,114,45,109,117,103,45,101,109,112,116,121,8,115,113,117,97,114,101,45,104,11,115, +113,117,97,114,101,45,112,108,117,115,11,97,110,103,108,101,115,45,108,101,102,116,12,97,110,103,108,101,115,45,114,105, +103,104,116,9,97,110,103,108,101,115,45,117,112,11,97,110,103,108,101,115,45,100,111,119,110,10,97,110,103,108,101,45, +108,101,102,116,11,97,110,103,108,101,45,114,105,103,104,116,8,97,110,103,108,101,45,117,112,10,97,110,103,108,101,45, +100,111,119,110,6,108,97,112,116,111,112,13,116,97,98,108,101,116,45,98,117,116,116,111,110,13,109,111,98,105,108,101, +45,98,117,116,116,111,110,10,113,117,111,116,101,45,108,101,102,116,11,113,117,111,116,101,45,114,105,103,104,116,7,115, +112,105,110,110,101,114,6,99,105,114,99,108,101,10,102,97,99,101,45,115,109,105,108,101,10,102,97,99,101,45,102,114, +111,119,110,8,102,97,99,101,45,109,101,104,7,103,97,109,101,112,97,100,8,107,101,121,98,111,97,114,100,14,102,108, +97,103,45,99,104,101,99,107,101,114,101,100,8,116,101,114,109,105,110,97,108,4,99,111,100,101,9,114,101,112,108,121, +45,97,108,108,14,108,111,99,97,116,105,111,110,45,97,114,114,111,119,4,99,114,111,112,11,99,111,100,101,45,98,114, +97,110,99,104,10,108,105,110,107,45,115,108,97,115,104,4,105,110,102,111,11,115,117,112,101,114,115,99,114,105,112,116, +9,115,117,98,115,99,114,105,112,116,6,101,114,97,115,101,114,12,112,117,122,122,108,101,45,112,105,101,99,101,10,109, +105,99,114,111,112,104,111,110,101,16,109,105,99,114,111,112,104,111,110,101,45,115,108,97,115,104,6,115,104,105,101,108, +100,8,99,97,108,101,110,100,97,114,17,102,105,114,101,45,101,120,116,105,110,103,117,105,115,104,101,114,6,114,111,99, +107,101,116,19,99,105,114,99,108,101,45,99,104,101,118,114,111,110,45,108,101,102,116,20,99,105,114,99,108,101,45,99, +104,101,118,114,111,110,45,114,105,103,104,116,17,99,105,114,99,108,101,45,99,104,101,118,114,111,110,45,117,112,19,99, +105,114,99,108,101,45,99,104,101,118,114,111,110,45,100,111,119,110,6,97,110,99,104,111,114,14,117,110,108,111,99,107, +45,107,101,121,104,111,108,101,8,98,117,108,108,115,101,121,101,8,101,108,108,105,112,115,105,115,17,101,108,108,105,112, +115,105,115,45,118,101,114,116,105,99,97,108,10,115,113,117,97,114,101,45,114,115,115,11,99,105,114,99,108,101,45,112, +108,97,121,6,116,105,99,107,101,116,12,115,113,117,97,114,101,45,109,105,110,117,115,13,97,114,114,111,119,45,116,117, +114,110,45,117,112,15,97,114,114,111,119,45,116,117,114,110,45,100,111,119,110,12,115,113,117,97,114,101,45,99,104,101, +99,107,10,115,113,117,97,114,101,45,112,101,110,21,115,113,117,97,114,101,45,97,114,114,111,119,45,117,112,45,114,105, +103,104,116,17,115,104,97,114,101,45,102,114,111,109,45,115,113,117,97,114,101,7,99,111,109,112,97,115,115,17,115,113, +117,97,114,101,45,99,97,114,101,116,45,100,111,119,110,15,115,113,117,97,114,101,45,99,97,114,101,116,45,117,112,18, +115,113,117,97,114,101,45,99,97,114,101,116,45,114,105,103,104,116,9,101,117,114,111,45,115,105,103,110,13,115,116,101, +114,108,105,110,103,45,115,105,103,110,10,114,117,112,101,101,45,115,105,103,110,8,121,101,110,45,115,105,103,110,10,114, +117,98,108,101,45,115,105,103,110,8,119,111,110,45,115,105,103,110,4,102,105,108,101,10,102,105,108,101,45,108,105,110, +101,115,14,97,114,114,111,119,45,100,111,119,110,45,97,45,122,12,97,114,114,111,119,45,117,112,45,97,45,122,21,97, +114,114,111,119,45,100,111,119,110,45,119,105,100,101,45,115,104,111,114,116,19,97,114,114,111,119,45,117,112,45,119,105, +100,101,45,115,104,111,114,116,14,97,114,114,111,119,45,100,111,119,110,45,49,45,57,12,97,114,114,111,119,45,117,112, +45,49,45,57,9,116,104,117,109,98,115,45,117,112,11,116,104,117,109,98,115,45,100,111,119,110,15,97,114,114,111,119, +45,100,111,119,110,45,108,111,110,103,13,97,114,114,111,119,45,117,112,45,108,111,110,103,15,97,114,114,111,119,45,108, +101,102,116,45,108,111,110,103,16,97,114,114,111,119,45,114,105,103,104,116,45,108,111,110,103,12,112,101,114,115,111,110, +45,100,114,101,115,115,6,112,101,114,115,111,110,3,115,117,110,4,109,111,111,110,11,98,111,120,45,97,114,99,104,105, +118,101,3,98,117,103,17,115,113,117,97,114,101,45,99,97,114,101,116,45,108,101,102,116,10,99,105,114,99,108,101,45, +100,111,116,10,119,104,101,101,108,99,104,97,105,114,9,108,105,114,97,45,115,105,103,110,13,115,104,117,116,116,108,101, +45,115,112,97,99,101,15,115,113,117,97,114,101,45,101,110,118,101,108,111,112,101,16,98,117,105,108,100,105,110,103,45, +99,111,108,117,109,110,115,14,103,114,97,100,117,97,116,105,111,110,45,99,97,112,8,108,97,110,103,117,97,103,101,3, +102,97,120,8,98,117,105,108,100,105,110,103,5,99,104,105,108,100,3,112,97,119,4,99,117,98,101,5,99,117,98,101, +115,7,114,101,99,121,99,108,101,3,99,97,114,4,116,97,120,105,4,116,114,101,101,8,100,97,116,97,98,97,115,101, +8,102,105,108,101,45,112,100,102,9,102,105,108,101,45,119,111,114,100,10,102,105,108,101,45,101,120,99,101,108,15,102, +105,108,101,45,112,111,119,101,114,112,111,105,110,116,10,102,105,108,101,45,105,109,97,103,101,11,102,105,108,101,45,122, +105,112,112,101,114,10,102,105,108,101,45,97,117,100,105,111,10,102,105,108,101,45,118,105,100,101,111,9,102,105,108,101, +45,99,111,100,101,9,108,105,102,101,45,114,105,110,103,12,99,105,114,99,108,101,45,110,111,116,99,104,11,112,97,112, +101,114,45,112,108,97,110,101,17,99,108,111,99,107,45,114,111,116,97,116,101,45,108,101,102,116,7,104,101,97,100,105, +110,103,9,112,97,114,97,103,114,97,112,104,7,115,108,105,100,101,114,115,11,115,104,97,114,101,45,110,111,100,101,115, +18,115,113,117,97,114,101,45,115,104,97,114,101,45,110,111,100,101,115,4,98,111,109,98,6,102,117,116,98,111,108,3, +116,116,121,10,98,105,110,111,99,117,108,97,114,115,4,112,108,117,103,9,110,101,119,115,112,97,112,101,114,4,119,105, +102,105,10,99,97,108,99,117,108,97,116,111,114,10,98,101,108,108,45,115,108,97,115,104,5,116,114,97,115,104,9,99, +111,112,121,114,105,103,104,116,11,101,121,101,45,100,114,111,112,112,101,114,10,112,97,105,110,116,98,114,117,115,104,12, +99,97,107,101,45,99,97,110,100,108,101,115,10,99,104,97,114,116,45,97,114,101,97,9,99,104,97,114,116,45,112,105, +101,10,99,104,97,114,116,45,108,105,110,101,10,116,111,103,103,108,101,45,111,102,102,9,116,111,103,103,108,101,45,111, +110,7,98,105,99,121,99,108,101,3,98,117,115,17,99,108,111,115,101,100,45,99,97,112,116,105,111,110,105,110,103,11, +115,104,101,107,101,108,45,115,105,103,110,9,99,97,114,116,45,112,108,117,115,15,99,97,114,116,45,97,114,114,111,119, +45,100,111,119,110,7,100,105,97,109,111,110,100,4,115,104,105,112,11,117,115,101,114,45,115,101,99,114,101,116,10,109, +111,116,111,114,99,121,99,108,101,11,115,116,114,101,101,116,45,118,105,101,119,11,104,101,97,114,116,45,112,117,108,115, +101,5,118,101,110,117,115,4,109,97,114,115,7,109,101,114,99,117,114,121,14,109,97,114,115,45,97,110,100,45,118,101, +110,117,115,11,116,114,97,110,115,103,101,110,100,101,114,12,118,101,110,117,115,45,100,111,117,98,108,101,11,109,97,114, +115,45,100,111,117,98,108,101,10,118,101,110,117,115,45,109,97,114,115,11,109,97,114,115,45,115,116,114,111,107,101,14, +109,97,114,115,45,115,116,114,111,107,101,45,117,112,17,109,97,114,115,45,115,116,114,111,107,101,45,114,105,103,104,116, +6,110,101,117,116,101,114,10,103,101,110,100,101,114,108,101,115,115,6,115,101,114,118,101,114,9,117,115,101,114,45,112, +108,117,115,10,117,115,101,114,45,120,109,97,114,107,3,98,101,100,5,116,114,97,105,110,12,116,114,97,105,110,45,115, +117,98,119,97,121,12,98,97,116,116,101,114,121,45,102,117,108,108,22,98,97,116,116,101,114,121,45,116,104,114,101,101, +45,113,117,97,114,116,101,114,115,12,98,97,116,116,101,114,121,45,104,97,108,102,15,98,97,116,116,101,114,121,45,113, +117,97,114,116,101,114,13,98,97,116,116,101,114,121,45,101,109,112,116,121,13,97,114,114,111,119,45,112,111,105,110,116, +101,114,8,105,45,99,117,114,115,111,114,12,111,98,106,101,99,116,45,103,114,111,117,112,14,111,98,106,101,99,116,45, +117,110,103,114,111,117,112,11,110,111,116,101,45,115,116,105,99,107,121,5,99,108,111,110,101,14,115,99,97,108,101,45, +98,97,108,97,110,99,101,100,15,104,111,117,114,103,108,97,115,115,45,115,116,97,114,116,14,104,111,117,114,103,108,97, +115,115,45,104,97,108,102,13,104,111,117,114,103,108,97,115,115,45,101,110,100,9,104,111,117,114,103,108,97,115,115,14, +104,97,110,100,45,98,97,99,107,45,102,105,115,116,4,104,97,110,100,13,104,97,110,100,45,115,99,105,115,115,111,114, +115,11,104,97,110,100,45,108,105,122,97,114,100,10,104,97,110,100,45,115,112,111,99,107,12,104,97,110,100,45,112,111, +105,110,116,101,114,10,104,97,110,100,45,112,101,97,99,101,9,116,114,97,100,101,109,97,114,107,10,114,101,103,105,115, +116,101,114,101,100,2,116,118,13,99,97,108,101,110,100,97,114,45,112,108,117,115,14,99,97,108,101,110,100,97,114,45, +109,105,110,117,115,14,99,97,108,101,110,100,97,114,45,120,109,97,114,107,14,99,97,108,101,110,100,97,114,45,99,104, +101,99,107,8,105,110,100,117,115,116,114,121,7,109,97,112,45,112,105,110,10,115,105,103,110,115,45,112,111,115,116,3, +109,97,112,7,109,101,115,115,97,103,101,12,99,105,114,99,108,101,45,112,97,117,115,101,11,99,105,114,99,108,101,45, +115,116,111,112,12,98,97,103,45,115,104,111,112,112,105,110,103,15,98,97,115,107,101,116,45,115,104,111,112,112,105,110, +103,16,117,110,105,118,101,114,115,97,108,45,97,99,99,101,115,115,24,112,101,114,115,111,110,45,119,97,108,107,105,110, +103,45,119,105,116,104,45,99,97,110,101,17,97,117,100,105,111,45,100,101,115,99,114,105,112,116,105,111,110,12,112,104, +111,110,101,45,118,111,108,117,109,101,7,98,114,97,105,108,108,101,10,101,97,114,45,108,105,115,116,101,110,22,104,97, +110,100,115,45,97,115,108,45,105,110,116,101,114,112,114,101,116,105,110,103,8,101,97,114,45,100,101,97,102,5,104,97, +110,100,115,14,101,121,101,45,108,111,119,45,118,105,115,105,111,110,12,102,111,110,116,45,97,119,101,115,111,109,101,9, +104,97,110,100,115,104,97,107,101,13,101,110,118,101,108,111,112,101,45,111,112,101,110,12,97,100,100,114,101,115,115,45, +98,111,111,107,12,97,100,100,114,101,115,115,45,99,97,114,100,11,99,105,114,99,108,101,45,117,115,101,114,8,105,100, +45,98,97,100,103,101,7,105,100,45,99,97,114,100,16,116,101,109,112,101,114,97,116,117,114,101,45,102,117,108,108,26, +116,101,109,112,101,114,97,116,117,114,101,45,116,104,114,101,101,45,113,117,97,114,116,101,114,115,16,116,101,109,112,101, +114,97,116,117,114,101,45,104,97,108,102,19,116,101,109,112,101,114,97,116,117,114,101,45,113,117,97,114,116,101,114,17, +116,101,109,112,101,114,97,116,117,114,101,45,101,109,112,116,121,6,115,104,111,119,101,114,4,98,97,116,104,7,112,111, +100,99,97,115,116,15,119,105,110,100,111,119,45,109,97,120,105,109,105,122,101,15,119,105,110,100,111,119,45,109,105,110, +105,109,105,122,101,14,119,105,110,100,111,119,45,114,101,115,116,111,114,101,12,115,113,117,97,114,101,45,120,109,97,114, +107,9,109,105,99,114,111,99,104,105,112,9,115,110,111,119,102,108,97,107,101,5,115,112,111,111,110,8,117,116,101,110, +115,105,108,115,11,114,111,116,97,116,101,45,108,101,102,116,9,116,114,97,115,104,45,99,97,110,6,114,111,116,97,116, +101,9,115,116,111,112,119,97,116,99,104,18,114,105,103,104,116,45,102,114,111,109,45,98,114,97,99,107,101,116,16,114, +105,103,104,116,45,116,111,45,98,114,97,99,107,101,116,12,114,111,116,97,116,101,45,114,105,103,104,116,3,112,111,111, +6,105,109,97,103,101,115,6,112,101,110,99,105,108,3,112,101,110,8,112,101,110,45,99,108,105,112,9,100,111,119,110, +45,108,111,110,103,9,108,101,102,116,45,108,111,110,103,10,114,105,103,104,116,45,108,111,110,103,7,117,112,45,108,111, +110,103,8,102,105,108,101,45,112,101,110,8,109,97,120,105,109,105,122,101,9,99,108,105,112,98,111,97,114,100,10,108, +101,102,116,45,114,105,103,104,116,7,117,112,45,100,111,119,110,11,99,105,114,99,108,101,45,100,111,119,110,11,99,105, +114,99,108,101,45,108,101,102,116,12,99,105,114,99,108,101,45,114,105,103,104,116,9,99,105,114,99,108,101,45,117,112, +20,117,112,45,114,105,103,104,116,45,102,114,111,109,45,115,113,117,97,114,101,15,115,113,117,97,114,101,45,117,112,45, +114,105,103,104,116,10,114,105,103,104,116,45,108,101,102,116,6,114,101,112,101,97,116,11,99,111,100,101,45,99,111,109, +109,105,116,10,99,111,100,101,45,109,101,114,103,101,7,100,101,115,107,116,111,112,3,103,101,109,9,116,117,114,110,45, +100,111,119,110,7,116,117,114,110,45,117,112,9,108,111,99,107,45,111,112,101,110,12,108,111,99,97,116,105,111,110,45, +100,111,116,16,109,105,99,114,111,112,104,111,110,101,45,108,105,110,101,115,20,109,111,98,105,108,101,45,115,99,114,101, +101,110,45,98,117,116,116,111,110,6,109,111,98,105,108,101,13,109,111,98,105,108,101,45,115,99,114,101,101,110,12,109, +111,110,101,121,45,98,105,108,108,45,49,11,112,104,111,110,101,45,115,108,97,115,104,14,105,109,97,103,101,45,112,111, +114,116,114,97,105,116,5,114,101,112,108,121,13,115,104,105,101,108,100,45,104,97,108,118,101,100,20,116,97,98,108,101, +116,45,115,99,114,101,101,110,45,98,117,116,116,111,110,6,116,97,98,108,101,116,13,116,105,99,107,101,116,45,115,105, +109,112,108,101,10,117,115,101,114,45,108,97,114,103,101,15,114,101,99,116,97,110,103,108,101,45,120,109,97,114,107,32, +100,111,119,110,45,108,101,102,116,45,97,110,100,45,117,112,45,114,105,103,104,116,45,116,111,45,99,101,110,116,101,114, +34,117,112,45,114,105,103,104,116,45,97,110,100,45,100,111,119,110,45,108,101,102,116,45,102,114,111,109,45,99,101,110, +116,101,114,17,98,97,115,101,98,97,108,108,45,98,97,116,45,98,97,108,108,8,98,97,115,101,98,97,108,108,10,98, +97,115,107,101,116,98,97,108,108,12,98,111,119,108,105,110,103,45,98,97,108,108,5,99,104,101,115,115,12,99,104,101, +115,115,45,98,105,115,104,111,112,11,99,104,101,115,115,45,98,111,97,114,100,10,99,104,101,115,115,45,107,105,110,103, +12,99,104,101,115,115,45,107,110,105,103,104,116,10,99,104,101,115,115,45,112,97,119,110,11,99,104,101,115,115,45,113, +117,101,101,110,10,99,104,101,115,115,45,114,111,111,107,8,100,117,109,98,98,101,108,108,8,102,111,111,116,98,97,108, +108,13,103,111,108,102,45,98,97,108,108,45,116,101,101,11,104,111,99,107,101,121,45,112,117,99,107,10,98,114,111,111, +109,45,98,97,108,108,11,115,113,117,97,114,101,45,102,117,108,108,24,116,97,98,108,101,45,116,101,110,110,105,115,45, +112,97,100,100,108,101,45,98,97,108,108,10,118,111,108,108,101,121,98,97,108,108,9,104,97,110,100,45,100,111,116,115, +7,98,97,110,100,97,103,101,3,98,111,120,13,98,111,120,101,115,45,115,116,97,99,107,101,100,17,98,114,105,101,102, +99,97,115,101,45,109,101,100,105,99,97,108,17,102,105,114,101,45,102,108,97,109,101,45,115,105,109,112,108,101,8,99, +97,112,115,117,108,101,115,15,99,108,105,112,98,111,97,114,100,45,99,104,101,99,107,14,99,108,105,112,98,111,97,114, +100,45,108,105,115,116,21,112,101,114,115,111,110,45,100,111,116,115,45,102,114,111,109,45,108,105,110,101,3,100,110,97, +5,100,111,108,108,121,12,99,97,114,116,45,102,108,97,116,98,101,100,12,102,105,108,101,45,109,101,100,105,99,97,108, +13,102,105,108,101,45,119,97,118,101,102,111,114,109,11,107,105,116,45,109,101,100,105,99,97,108,8,99,105,114,99,108, +101,45,104,12,105,100,45,99,97,114,100,45,99,108,105,112,13,110,111,116,101,115,45,109,101,100,105,99,97,108,6,112, +97,108,108,101,116,5,112,105,108,108,115,19,112,114,101,115,99,114,105,112,116,105,111,110,45,98,111,116,116,108,101,27, +112,114,101,115,99,114,105,112,116,105,111,110,45,98,111,116,116,108,101,45,109,101,100,105,99,97,108,9,98,101,100,45, +112,117,108,115,101,10,116,114,117,99,107,45,102,97,115,116,7,115,109,111,107,105,110,103,7,115,121,114,105,110,103,101, +7,116,97,98,108,101,116,115,11,116,104,101,114,109,111,109,101,116,101,114,4,118,105,97,108,5,118,105,97,108,115,9, +119,97,114,101,104,111,117,115,101,12,119,101,105,103,104,116,45,115,99,97,108,101,5,120,45,114,97,121,8,98,111,120, +45,111,112,101,110,12,99,111,109,109,101,110,116,45,100,111,116,115,13,99,111,109,109,101,110,116,45,115,108,97,115,104, +5,99,111,117,99,104,21,99,105,114,99,108,101,45,100,111,108,108,97,114,45,116,111,45,115,108,111,116,4,100,111,118, +101,12,104,97,110,100,45,104,111,108,100,105,110,103,18,104,97,110,100,45,104,111,108,100,105,110,103,45,104,101,97,114, +116,19,104,97,110,100,45,104,111,108,100,105,110,103,45,100,111,108,108,97,114,20,104,97,110,100,45,104,111,108,100,105, +110,103,45,100,114,111,112,108,101,116,13,104,97,110,100,115,45,104,111,108,100,105,110,103,15,104,97,110,100,115,104,97, +107,101,45,97,110,103,108,101,16,104,97,110,100,115,104,97,107,101,45,115,105,109,112,108,101,13,112,97,114,97,99,104, +117,116,101,45,98,111,120,16,112,101,111,112,108,101,45,99,97,114,114,121,45,98,111,120,10,112,105,103,103,121,45,98, +97,110,107,6,114,105,98,98,111,110,5,114,111,117,116,101,8,115,101,101,100,108,105,110,103,12,115,105,103,110,45,104, +97,110,103,105,110,103,15,102,97,99,101,45,115,109,105,108,101,45,119,105,110,107,4,116,97,112,101,14,116,114,117,99, +107,45,114,97,109,112,45,98,111,120,12,116,114,117,99,107,45,109,111,118,105,110,103,11,118,105,100,101,111,45,115,108, +97,115,104,10,119,105,110,101,45,103,108,97,115,115,16,117,115,101,114,45,108,97,114,103,101,45,115,108,97,115,104,14, +117,115,101,114,45,97,115,116,114,111,110,97,117,116,10,117,115,101,114,45,99,104,101,99,107,10,117,115,101,114,45,99, +108,111,99,107,9,117,115,101,114,45,103,101,97,114,8,117,115,101,114,45,112,101,110,10,117,115,101,114,45,103,114,111, +117,112,13,117,115,101,114,45,103,114,97,100,117,97,116,101,9,117,115,101,114,45,108,111,99,107,10,117,115,101,114,45, +109,105,110,117,115,10,117,115,101,114,45,110,105,110,106,97,11,117,115,101,114,45,115,104,105,101,108,100,10,117,115,101, +114,45,115,108,97,115,104,8,117,115,101,114,45,116,97,103,8,117,115,101,114,45,116,105,101,10,117,115,101,114,115,45, +103,101,97,114,16,115,99,97,108,101,45,117,110,98,97,108,97,110,99,101,100,21,115,99,97,108,101,45,117,110,98,97, +108,97,110,99,101,100,45,102,108,105,112,7,98,108,101,110,100,101,114,9,98,111,111,107,45,111,112,101,110,15,116,111, +119,101,114,45,98,114,111,97,100,99,97,115,116,5,98,114,111,111,109,10,99,104,97,108,107,98,111,97,114,100,15,99, +104,97,108,107,98,111,97,114,100,45,117,115,101,114,6,99,104,117,114,99,104,5,99,111,105,110,115,12,99,111,109,112, +97,99,116,45,100,105,115,99,4,99,114,111,119,5,99,114,111,119,110,4,100,105,99,101,9,100,105,99,101,45,102,105, +118,101,9,100,105,99,101,45,102,111,117,114,8,100,105,99,101,45,111,110,101,8,100,105,99,101,45,115,105,120,10,100, +105,99,101,45,116,104,114,101,101,8,100,105,99,101,45,116,119,111,6,100,105,118,105,100,101,11,100,111,111,114,45,99, +108,111,115,101,100,9,100,111,111,114,45,111,112,101,110,7,102,101,97,116,104,101,114,4,102,114,111,103,8,103,97,115, +45,112,117,109,112,7,103,108,97,115,115,101,115,18,103,114,101,97,116,101,114,45,116,104,97,110,45,101,113,117,97,108, +10,104,101,108,105,99,111,112,116,101,114,8,105,110,102,105,110,105,116,121,9,107,105,119,105,45,98,105,114,100,15,108, +101,115,115,45,116,104,97,110,45,101,113,117,97,108,6,109,101,109,111,114,121,22,109,105,99,114,111,112,104,111,110,101, +45,108,105,110,101,115,45,115,108,97,115,104,15,109,111,110,101,121,45,98,105,108,108,45,119,97,118,101,17,109,111,110, +101,121,45,98,105,108,108,45,49,45,119,97,118,101,11,109,111,110,101,121,45,99,104,101,99,107,18,109,111,110,101,121, +45,99,104,101,99,107,45,100,111,108,108,97,114,9,110,111,116,45,101,113,117,97,108,7,112,97,108,101,116,116,101,14, +115,113,117,97,114,101,45,112,97,114,107,105,110,103,15,100,105,97,103,114,97,109,45,112,114,111,106,101,99,116,7,114, +101,99,101,105,112,116,5,114,111,98,111,116,5,114,117,108,101,114,14,114,117,108,101,114,45,99,111,109,98,105,110,101, +100,16,114,117,108,101,114,45,104,111,114,105,122,111,110,116,97,108,14,114,117,108,101,114,45,118,101,114,116,105,99,97, +108,6,115,99,104,111,111,108,11,115,99,114,101,119,100,114,105,118,101,114,11,115,104,111,101,45,112,114,105,110,116,115, +5,115,107,117,108,108,11,98,97,110,45,115,109,111,107,105,110,103,5,115,116,111,114,101,4,115,104,111,112,14,98,97, +114,115,45,115,116,97,103,103,101,114,101,100,11,115,116,114,111,111,112,119,97,102,101,108,7,116,111,111,108,98,111,120, +5,115,104,105,114,116,14,112,101,114,115,111,110,45,119,97,108,107,105,110,103,6,119,97,108,108,101,116,10,102,97,99, +101,45,97,110,103,114,121,7,97,114,99,104,119,97,121,10,98,111,111,107,45,97,116,108,97,115,5,97,119,97,114,100, +11,100,101,108,101,116,101,45,108,101,102,116,12,98,101,122,105,101,114,45,99,117,114,118,101,4,98,111,110,103,5,98, +114,117,115,104,10,98,117,115,45,115,105,109,112,108,101,8,99,97,110,110,97,98,105,115,12,99,104,101,99,107,45,100, +111,117,98,108,101,20,109,97,114,116,105,110,105,45,103,108,97,115,115,45,99,105,116,114,117,115,14,98,101,108,108,45, +99,111,110,99,105,101,114,103,101,6,99,111,111,107,105,101,11,99,111,111,107,105,101,45,98,105,116,101,11,99,114,111, +112,45,115,105,109,112,108,101,18,116,97,99,104,111,103,114,97,112,104,45,100,105,103,105,116,97,108,10,102,97,99,101, +45,100,105,122,122,121,16,99,111,109,112,97,115,115,45,100,114,97,102,116,105,110,103,4,100,114,117,109,13,100,114,117, +109,45,115,116,101,101,108,112,97,110,15,102,101,97,116,104,101,114,45,112,111,105,110,116,101,100,13,102,105,108,101,45, +99,111,110,116,114,97,99,116,15,102,105,108,101,45,97,114,114,111,119,45,100,111,119,110,11,102,105,108,101,45,101,120, +112,111,114,116,11,102,105,108,101,45,105,109,112,111,114,116,12,102,105,108,101,45,105,110,118,111,105,99,101,19,102,105, +108,101,45,105,110,118,111,105,99,101,45,100,111,108,108,97,114,17,102,105,108,101,45,112,114,101,115,99,114,105,112,116, +105,111,110,14,102,105,108,101,45,115,105,103,110,97,116,117,114,101,13,102,105,108,101,45,97,114,114,111,119,45,117,112, +4,102,105,108,108,9,102,105,108,108,45,100,114,105,112,11,102,105,110,103,101,114,112,114,105,110,116,4,102,105,115,104, +12,102,97,99,101,45,102,108,117,115,104,101,100,15,102,97,99,101,45,102,114,111,119,110,45,111,112,101,110,13,109,97, +114,116,105,110,105,45,103,108,97,115,115,12,101,97,114,116,104,45,97,102,114,105,99,97,14,101,97,114,116,104,45,97, +109,101,114,105,99,97,115,10,101,97,114,116,104,45,97,115,105,97,12,102,97,99,101,45,103,114,105,109,97,99,101,9, +102,97,99,101,45,103,114,105,110,14,102,97,99,101,45,103,114,105,110,45,119,105,100,101,14,102,97,99,101,45,103,114, +105,110,45,98,101,97,109,20,102,97,99,101,45,103,114,105,110,45,98,101,97,109,45,115,119,101,97,116,16,102,97,99, +101,45,103,114,105,110,45,104,101,97,114,116,115,16,102,97,99,101,45,103,114,105,110,45,115,113,117,105,110,116,22,102, +97,99,101,45,103,114,105,110,45,115,113,117,105,110,116,45,116,101,97,114,115,15,102,97,99,101,45,103,114,105,110,45, +115,116,97,114,115,15,102,97,99,101,45,103,114,105,110,45,116,101,97,114,115,16,102,97,99,101,45,103,114,105,110,45, +116,111,110,103,117,101,23,102,97,99,101,45,103,114,105,110,45,116,111,110,103,117,101,45,115,113,117,105,110,116,21,102, +97,99,101,45,103,114,105,110,45,116,111,110,103,117,101,45,119,105,110,107,14,102,97,99,101,45,103,114,105,110,45,119, +105,110,107,4,103,114,105,112,13,103,114,105,112,45,118,101,114,116,105,99,97,108,17,104,101,97,100,112,104,111,110,101, +115,45,115,105,109,112,108,101,7,104,101,97,100,115,101,116,11,104,105,103,104,108,105,103,104,116,101,114,14,104,111,116, +45,116,117,98,45,112,101,114,115,111,110,5,104,111,116,101,108,5,106,111,105,110,116,9,102,97,99,101,45,107,105,115, +115,14,102,97,99,101,45,107,105,115,115,45,98,101,97,109,20,102,97,99,101,45,107,105,115,115,45,119,105,110,107,45, +104,101,97,114,116,10,102,97,99,101,45,108,97,117,103,104,15,102,97,99,101,45,108,97,117,103,104,45,98,101,97,109, +17,102,97,99,101,45,108,97,117,103,104,45,115,113,117,105,110,116,15,102,97,99,101,45,108,97,117,103,104,45,119,105, +110,107,21,99,97,114,116,45,102,108,97,116,98,101,100,45,115,117,105,116,99,97,115,101,12,109,97,112,45,108,111,99, +97,116,105,111,110,16,109,97,112,45,108,111,99,97,116,105,111,110,45,100,111,116,6,109,97,114,107,101,114,5,109,101, +100,97,108,14,102,97,99,101,45,109,101,104,45,98,108,97,110,107,17,102,97,99,101,45,114,111,108,108,105,110,103,45, +101,121,101,115,8,109,111,110,117,109,101,110,116,13,109,111,114,116,97,114,45,112,101,115,116,108,101,12,112,97,105,110, +116,45,114,111,108,108,101,114,8,112,97,115,115,112,111,114,116,9,112,101,110,45,102,97,110,99,121,7,112,101,110,45, +110,105,98,9,112,101,110,45,114,117,108,101,114,13,112,108,97,110,101,45,97,114,114,105,118,97,108,15,112,108,97,110, +101,45,100,101,112,97,114,116,117,114,101,12,112,114,101,115,99,114,105,112,116,105,111,110,12,102,97,99,101,45,115,97, +100,45,99,114,121,13,102,97,99,101,45,115,97,100,45,116,101,97,114,11,118,97,110,45,115,104,117,116,116,108,101,9, +115,105,103,110,97,116,117,114,101,15,102,97,99,101,45,115,109,105,108,101,45,98,101,97,109,11,115,111,108,97,114,45, +112,97,110,101,108,3,115,112,97,7,115,112,108,111,116,99,104,9,115,112,114,97,121,45,99,97,110,5,115,116,97,109, +112,16,115,116,97,114,45,104,97,108,102,45,115,116,114,111,107,101,16,115,117,105,116,99,97,115,101,45,114,111,108,108, +105,110,103,13,102,97,99,101,45,115,117,114,112,114,105,115,101,10,115,119,97,116,99,104,98,111,111,107,15,112,101,114, +115,111,110,45,115,119,105,109,109,105,110,103,12,119,97,116,101,114,45,108,97,100,100,101,114,13,100,114,111,112,108,101, +116,45,115,108,97,115,104,10,102,97,99,101,45,116,105,114,101,100,5,116,111,111,116,104,14,117,109,98,114,101,108,108, +97,45,98,101,97,99,104,13,118,101,99,116,111,114,45,115,113,117,97,114,101,14,119,101,105,103,104,116,45,104,97,110, +103,105,110,103,16,119,105,110,101,45,103,108,97,115,115,45,101,109,112,116,121,18,115,112,114,97,121,45,99,97,110,45, +115,112,97,114,107,108,101,115,11,97,112,112,108,101,45,119,104,111,108,101,4,97,116,111,109,4,98,111,110,101,16,98, +111,111,107,45,111,112,101,110,45,114,101,97,100,101,114,5,98,114,97,105,110,8,99,97,114,45,114,101,97,114,11,99, +97,114,45,98,97,116,116,101,114,121,9,99,97,114,45,98,117,114,115,116,8,99,97,114,45,115,105,100,101,16,99,104, +97,114,103,105,110,103,45,115,116,97,116,105,111,110,18,100,105,97,109,111,110,100,45,116,117,114,110,45,114,105,103,104, +116,12,100,114,97,119,45,112,111,108,121,103,111,110,11,108,97,112,116,111,112,45,99,111,100,101,11,108,97,121,101,114, +45,103,114,111,117,112,19,108,111,99,97,116,105,111,110,45,99,114,111,115,115,104,97,105,114,115,5,108,117,110,103,115, +10,109,105,99,114,111,115,99,111,112,101,7,111,105,108,45,99,97,110,4,112,111,111,112,6,115,104,97,112,101,115,12, +115,116,97,114,45,111,102,45,108,105,102,101,5,103,97,117,103,101,10,103,97,117,103,101,45,104,105,103,104,12,103,97, +117,103,101,45,115,105,109,112,108,101,17,103,97,117,103,101,45,115,105,109,112,108,101,45,104,105,103,104,5,116,101,101, +116,104,10,116,101,101,116,104,45,111,112,101,110,13,109,97,115,107,115,45,116,104,101,97,116,101,114,13,116,114,97,102, +102,105,99,45,108,105,103,104,116,13,116,114,117,99,107,45,109,111,110,115,116,101,114,12,116,114,117,99,107,45,112,105, +99,107,117,112,12,114,101,99,116,97,110,103,108,101,45,97,100,4,97,110,107,104,10,98,111,111,107,45,98,105,98,108, +101,13,98,117,115,105,110,101,115,115,45,116,105,109,101,4,99,105,116,121,14,99,111,109,109,101,110,116,45,100,111,108, +108,97,114,15,99,111,109,109,101,110,116,115,45,100,111,108,108,97,114,5,99,114,111,115,115,12,100,104,97,114,109,97, +99,104,97,107,114,97,18,101,110,118,101,108,111,112,101,45,111,112,101,110,45,116,101,120,116,12,102,111,108,100,101,114, +45,109,105,110,117,115,11,102,111,108,100,101,114,45,112,108,117,115,20,102,105,108,116,101,114,45,99,105,114,99,108,101, +45,100,111,108,108,97,114,7,103,111,112,117,114,97,109,5,104,97,109,115,97,5,98,97,104,97,105,4,106,101,100,105, +19,98,111,111,107,45,106,111,117,114,110,97,108,45,119,104,105,108,108,115,5,107,97,97,98,97,6,107,104,97,110,100, +97,8,108,97,110,100,109,97,114,107,14,101,110,118,101,108,111,112,101,115,45,98,117,108,107,7,109,101,110,111,114,97, +104,6,109,111,115,113,117,101,2,111,109,24,115,112,97,103,104,101,116,116,105,45,109,111,110,115,116,101,114,45,102,108, +121,105,110,103,5,112,101,97,99,101,16,112,108,97,99,101,45,111,102,45,119,111,114,115,104,105,112,20,115,113,117,97, +114,101,45,112,111,108,108,45,118,101,114,116,105,99,97,108,22,115,113,117,97,114,101,45,112,111,108,108,45,104,111,114, +105,122,111,110,116,97,108,14,112,101,114,115,111,110,45,112,114,97,121,105,110,103,13,104,97,110,100,115,45,112,114,97, +121,105,110,103,10,98,111,111,107,45,113,117,114,97,110,23,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115, +45,100,111,108,108,97,114,25,109,97,103,110,105,102,121,105,110,103,45,103,108,97,115,115,45,108,111,99,97,116,105,111, +110,5,115,111,99,107,115,20,115,113,117,97,114,101,45,114,111,111,116,45,118,97,114,105,97,98,108,101,17,115,116,97, +114,45,97,110,100,45,99,114,101,115,99,101,110,116,13,115,116,97,114,45,111,102,45,100,97,118,105,100,9,115,121,110, +97,103,111,103,117,101,12,115,99,114,111,108,108,45,116,111,114,97,104,10,116,111,114,105,105,45,103,97,116,101,6,118, +105,104,97,114,97,12,118,111,108,117,109,101,45,120,109,97,114,107,8,121,105,110,45,121,97,110,103,13,98,108,101,110, +100,101,114,45,112,104,111,110,101,10,98,111,111,107,45,115,107,117,108,108,10,99,97,109,112,103,114,111,117,110,100,3, +99,97,116,5,99,104,97,105,114,10,99,108,111,117,100,45,109,111,111,110,9,99,108,111,117,100,45,115,117,110,3,99, +111,119,8,100,105,99,101,45,100,50,48,7,100,105,99,101,45,100,54,3,100,111,103,6,100,114,97,103,111,110,14,100, +114,117,109,115,116,105,99,107,45,98,105,116,101,7,100,117,110,103,101,111,110,8,102,105,108,101,45,99,115,118,9,104, +97,110,100,45,102,105,115,116,5,103,104,111,115,116,6,104,97,109,109,101,114,8,104,97,110,117,107,105,97,104,10,104, +97,116,45,119,105,122,97,114,100,13,112,101,114,115,111,110,45,104,105,107,105,110,103,5,104,105,112,112,111,5,104,111, +114,115,101,19,104,111,117,115,101,45,99,104,105,109,110,101,121,45,99,114,97,99,107,12,104,114,121,118,110,105,97,45, +115,105,103,110,4,109,97,115,107,8,109,111,117,110,116,97,105,110,13,110,101,116,119,111,114,107,45,119,105,114,101,100, +5,111,116,116,101,114,4,114,105,110,103,14,112,101,114,115,111,110,45,114,117,110,110,105,110,103,6,115,99,114,111,108, +108,16,115,107,117,108,108,45,99,114,111,115,115,98,111,110,101,115,5,115,108,97,115,104,6,115,112,105,100,101,114,12, +116,111,105,108,101,116,45,112,97,112,101,114,7,116,114,97,99,116,111,114,12,117,115,101,114,45,105,110,106,117,114,101, +100,12,118,114,45,99,97,114,100,98,111,97,114,100,13,119,97,110,100,45,115,112,97,114,107,108,101,115,4,119,105,110, +100,11,119,105,110,101,45,98,111,116,116,108,101,14,99,108,111,117,100,45,109,101,97,116,98,97,108,108,15,99,108,111, +117,100,45,109,111,111,110,45,114,97,105,110,10,99,108,111,117,100,45,114,97,105,110,19,99,108,111,117,100,45,115,104, +111,119,101,114,115,45,104,101,97,118,121,14,99,108,111,117,100,45,115,117,110,45,114,97,105,110,8,100,101,109,111,99, +114,97,116,8,102,108,97,103,45,117,115,97,9,104,117,114,114,105,99,97,110,101,13,108,97,110,100,109,97,114,107,45, +100,111,109,101,6,109,101,116,101,111,114,12,112,101,114,115,111,110,45,98,111,111,116,104,9,112,111,111,45,115,116,111, +114,109,7,114,97,105,110,98,111,119,10,114,101,112,117,98,108,105,99,97,110,4,115,109,111,103,16,116,101,109,112,101, +114,97,116,117,114,101,45,104,105,103,104,15,116,101,109,112,101,114,97,116,117,114,101,45,108,111,119,10,99,108,111,117, +100,45,98,111,108,116,7,116,111,114,110,97,100,111,7,118,111,108,99,97,110,111,13,99,104,101,99,107,45,116,111,45, +115,108,111,116,5,119,97,116,101,114,4,98,97,98,121,13,98,97,98,121,45,99,97,114,114,105,97,103,101,9,98,105, +111,104,97,122,97,114,100,4,98,108,111,103,12,99,97,108,101,110,100,97,114,45,100,97,121,13,99,97,108,101,110,100, +97,114,45,119,101,101,107,10,99,97,110,100,121,45,99,97,110,101,6,99,97,114,114,111,116,13,99,97,115,104,45,114, +101,103,105,115,116,101,114,8,109,105,110,105,109,105,122,101,8,100,117,109,112,115,116,101,114,13,100,117,109,112,115,116, +101,114,45,102,105,114,101,8,101,116,104,101,114,110,101,116,5,103,105,102,116,115,17,99,104,97,109,112,97,103,110,101, +45,103,108,97,115,115,101,115,13,119,104,105,115,107,101,121,45,103,108,97,115,115,12,101,97,114,116,104,45,101,117,114, +111,112,101,10,103,114,105,112,45,108,105,110,101,115,19,103,114,105,112,45,108,105,110,101,115,45,118,101,114,116,105,99, +97,108,6,103,117,105,116,97,114,11,104,101,97,114,116,45,99,114,97,99,107,11,104,111,108,108,121,45,98,101,114,114, +121,10,104,111,114,115,101,45,104,101,97,100,7,105,99,105,99,108,101,115,5,105,103,108,111,111,6,109,105,116,116,101, +110,7,109,117,103,45,104,111,116,9,114,97,100,105,97,116,105,111,110,16,99,105,114,99,108,101,45,114,97,100,105,97, +116,105,111,110,8,114,101,115,116,114,111,111,109,9,115,97,116,101,108,108,105,116,101,14,115,97,116,101,108,108,105,116, +101,45,100,105,115,104,7,115,100,45,99,97,114,100,8,115,105,109,45,99,97,114,100,14,112,101,114,115,111,110,45,115, +107,97,116,105,110,103,13,112,101,114,115,111,110,45,115,107,105,105,110,103,20,112,101,114,115,111,110,45,115,107,105,105, +110,103,45,110,111,114,100,105,99,6,115,108,101,105,103,104,11,99,111,109,109,101,110,116,45,115,109,115,19,112,101,114, +115,111,110,45,115,110,111,119,98,111,97,114,100,105,110,103,7,115,110,111,119,109,97,110,8,115,110,111,119,112,108,111, +119,10,116,101,110,103,101,45,115,105,103,110,6,116,111,105,108,101,116,18,115,99,114,101,119,100,114,105,118,101,114,45, +119,114,101,110,99,104,9,99,97,98,108,101,45,99,97,114,17,102,105,114,101,45,102,108,97,109,101,45,99,117,114,118, +101,100,5,98,97,99,111,110,12,98,111,111,107,45,109,101,100,105,99,97,108,11,98,114,101,97,100,45,115,108,105,99, +101,6,99,104,101,101,115,101,21,104,111,117,115,101,45,99,104,105,109,110,101,121,45,109,101,100,105,99,97,108,14,99, +108,105,112,98,111,97,114,100,45,117,115,101,114,15,99,111,109,109,101,110,116,45,109,101,100,105,99,97,108,6,99,114, +117,116,99,104,7,100,105,115,101,97,115,101,3,101,103,103,11,102,111,108,100,101,114,45,116,114,101,101,6,98,117,114, +103,101,114,18,104,97,110,100,45,109,105,100,100,108,101,45,102,105,110,103,101,114,13,104,101,108,109,101,116,45,115,97, +102,101,116,121,13,104,111,115,112,105,116,97,108,45,117,115,101,114,6,104,111,116,100,111,103,9,105,99,101,45,99,114, +101,97,109,14,108,97,112,116,111,112,45,109,101,100,105,99,97,108,5,112,97,103,101,114,10,112,101,112,112,101,114,45, +104,111,116,11,112,105,122,122,97,45,115,108,105,99,101,11,115,97,99,107,45,100,111,108,108,97,114,11,98,111,111,107, +45,116,97,110,97,107,104,13,98,97,114,115,45,112,114,111,103,114,101,115,115,14,116,114,97,115,104,45,97,114,114,111, +119,45,117,112,18,116,114,97,115,104,45,99,97,110,45,97,114,114,111,119,45,117,112,10,117,115,101,114,45,110,117,114, +115,101,11,119,97,118,101,45,115,113,117,97,114,101,13,112,101,114,115,111,110,45,98,105,107,105,110,103,10,98,111,114, +100,101,114,45,97,108,108,11,98,111,114,100,101,114,45,110,111,110,101,15,98,111,114,100,101,114,45,116,111,112,45,108, +101,102,116,14,112,101,114,115,111,110,45,100,105,103,103,105,110,103,3,102,97,110,5,105,99,111,110,115,10,112,104,111, +110,101,45,102,108,105,112,17,115,113,117,97,114,101,45,112,104,111,110,101,45,102,108,105,112,10,112,104,111,116,111,45, +102,105,108,109,10,116,101,120,116,45,115,108,97,115,104,14,97,114,114,111,119,45,100,111,119,110,45,122,45,97,12,97, +114,114,111,119,45,117,112,45,122,45,97,21,97,114,114,111,119,45,100,111,119,110,45,115,104,111,114,116,45,119,105,100, +101,19,97,114,114,111,119,45,117,112,45,115,104,111,114,116,45,119,105,100,101,14,97,114,114,111,119,45,100,111,119,110, +45,57,45,49,12,97,114,114,111,119,45,117,112,45,57,45,49,11,115,112,101,108,108,45,99,104,101,99,107,9,118,111, +105,99,101,109,97,105,108,10,104,97,116,45,99,111,119,98,111,121,15,104,97,116,45,99,111,119,98,111,121,45,115,105, +100,101,14,99,111,109,112,117,116,101,114,45,109,111,117,115,101,5,114,97,100,105,111,12,114,101,99,111,114,100,45,118, +105,110,121,108,13,119,97,108,107,105,101,45,116,97,108,107,105,101,7,99,97,114,97,118,97,110,0,0, +}; diff --git a/Editor/ForceFieldWindow.cpp b/Editor/ForceFieldWindow.cpp index 67f31ee87..ac78e679f 100644 --- a/Editor/ForceFieldWindow.cpp +++ b/Editor/ForceFieldWindow.cpp @@ -9,60 +9,32 @@ using namespace wi::scene; void ForceFieldWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Force Field Window"); + wi::gui::Window::Create(ICON_FORCE " Force Field", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(420, 120)); - float x = 150; + closeButton.SetTooltip("Delete ForceFieldComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().forces.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 60; float y = 0; float hei = 18; float step = hei + 2; + float wid = 200; - addButton.Create("Add Force Field"); - addButton.SetSize(XMFLOAT2(150, hei)); - addButton.SetPos(XMFLOAT2(x, y)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = editor->GetCurrentScene().Entity_CreateForce("editorForce"); - ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); - if (force != nullptr) - { - switch (typeComboBox.GetSelected()) - { - case 0: - force->type = ENTITY_TYPE_FORCEFIELD_POINT; - break; - case 1: - force->type = ENTITY_TYPE_FORCEFIELD_PLANE; - break; - default: - assert(0); - break; - } - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - } - else - { - assert(0); - } - }); - addButton.SetEnabled(true); - addButton.SetTooltip("Add new Force Field to the simulation."); - AddWidget(&addButton); - - typeComboBox.Create("Force Field type: "); - typeComboBox.SetPos(XMFLOAT2(x, y += step)); - typeComboBox.SetSize(XMFLOAT2(200, hei)); + typeComboBox.Create("Type: "); + typeComboBox.SetPos(XMFLOAT2(x, y)); + typeComboBox.SetSize(XMFLOAT2(wid, hei)); typeComboBox.OnSelect([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); if (force != nullptr && args.iValue >= 0) @@ -89,7 +61,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) gravitySlider.Create(-10, 10, 0, 100000, "Gravity: "); - gravitySlider.SetSize(XMFLOAT2(200, hei)); + gravitySlider.SetSize(XMFLOAT2(wid, hei)); gravitySlider.SetPos(XMFLOAT2(x, y += step)); gravitySlider.OnSlide([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); @@ -104,7 +76,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) rangeSlider.Create(0.0f, 100.0f, 10, 100000, "Range: "); - rangeSlider.SetSize(XMFLOAT2(200, hei)); + rangeSlider.SetSize(XMFLOAT2(wid, hei)); rangeSlider.SetPos(XMFLOAT2(x, y += step)); rangeSlider.OnSlide([&](wi::gui::EventArgs args) { ForceFieldComponent* force = editor->GetCurrentScene().forces.GetComponent(entity); @@ -119,7 +91,7 @@ void ForceFieldWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -147,5 +119,4 @@ void ForceFieldWindow::SetEntity(Entity entity) rangeSlider.SetEnabled(false); } - addButton.SetEnabled(true); } diff --git a/Editor/ForceFieldWindow.h b/Editor/ForceFieldWindow.h index 9aa3b1099..0be55fec4 100644 --- a/Editor/ForceFieldWindow.h +++ b/Editor/ForceFieldWindow.h @@ -15,6 +15,5 @@ public: wi::gui::ComboBox typeComboBox; wi::gui::Slider gravitySlider; wi::gui::Slider rangeSlider; - wi::gui::Button addButton; }; diff --git a/Editor/HairParticleWindow.cpp b/Editor/HairParticleWindow.cpp index 3185bedfe..875648ebf 100644 --- a/Editor/HairParticleWindow.cpp +++ b/Editor/HairParticleWindow.cpp @@ -8,41 +8,32 @@ using namespace wi::scene; void HairParticleWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Hair Particle System Window"); + wi::gui::Window::Create(ICON_HAIR " Hair Particle System", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(600, 260)); - float x = 160; + closeButton.SetTooltip("Delete HairParticleSystem"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().hairs.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 120; float y = 0; float hei = 18; float step = hei + 2; - - - addButton.Create("Add Hair Particle System"); - addButton.SetPos(XMFLOAT2(x, y)); - addButton.SetSize(XMFLOAT2(200, hei)); - addButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateHair("editorHair"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - addButton.SetTooltip("Add new hair particle system."); - AddWidget(&addButton); + float wid = 150; meshComboBox.Create("Mesh: "); - meshComboBox.SetSize(XMFLOAT2(300, hei)); - meshComboBox.SetPos(XMFLOAT2(x, y += step)); + meshComboBox.SetSize(XMFLOAT2(wid, hei)); + meshComboBox.SetPos(XMFLOAT2(x, y)); meshComboBox.SetEnabled(false); meshComboBox.OnSelect([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -63,7 +54,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&meshComboBox); countSlider.Create(0, 100000, 1000, 100000, "Strand Count: "); - countSlider.SetSize(XMFLOAT2(360, hei)); + countSlider.SetSize(XMFLOAT2(wid, hei)); countSlider.SetPos(XMFLOAT2(x, y += step)); countSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -76,8 +67,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) countSlider.SetTooltip("Set hair strand count"); AddWidget(&countSlider); - lengthSlider.Create(0, 4, 1, 100000, "Particle Length: "); - lengthSlider.SetSize(XMFLOAT2(360, hei)); + lengthSlider.Create(0, 4, 1, 100000, "Length: "); + lengthSlider.SetSize(XMFLOAT2(wid, hei)); lengthSlider.SetPos(XMFLOAT2(x, y += step)); lengthSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -90,8 +81,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) lengthSlider.SetTooltip("Set hair strand length"); AddWidget(&lengthSlider); - stiffnessSlider.Create(0, 20, 5, 100000, "Particle Stiffness: "); - stiffnessSlider.SetSize(XMFLOAT2(360, hei)); + stiffnessSlider.Create(0, 20, 5, 100000, "Stiffness: "); + stiffnessSlider.SetSize(XMFLOAT2(wid, hei)); stiffnessSlider.SetPos(XMFLOAT2(x, y += step)); stiffnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -104,8 +95,8 @@ void HairParticleWindow::Create(EditorComponent* _editor) stiffnessSlider.SetTooltip("Set hair strand stiffness, how much it tries to get back to rest position."); AddWidget(&stiffnessSlider); - randomnessSlider.Create(0, 1, 0.2f, 100000, "Particle Randomness: "); - randomnessSlider.SetSize(XMFLOAT2(360, hei)); + randomnessSlider.Create(0, 1, 0.2f, 100000, "Randomness: "); + randomnessSlider.SetSize(XMFLOAT2(wid, hei)); randomnessSlider.SetPos(XMFLOAT2(x, y += step)); randomnessSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -119,7 +110,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&randomnessSlider); segmentcountSlider.Create(1, 10, 1, 9, "Segment Count: "); - segmentcountSlider.SetSize(XMFLOAT2(360, hei)); + segmentcountSlider.SetSize(XMFLOAT2(wid, hei)); segmentcountSlider.SetPos(XMFLOAT2(x, y += step)); segmentcountSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -133,7 +124,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&segmentcountSlider); randomSeedSlider.Create(1, 12345, 1, 12344, "Random seed: "); - randomSeedSlider.SetSize(XMFLOAT2(360, hei)); + randomSeedSlider.SetSize(XMFLOAT2(wid, hei)); randomSeedSlider.SetPos(XMFLOAT2(x, y += step)); randomSeedSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -147,7 +138,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&randomSeedSlider); viewDistanceSlider.Create(0, 1000, 100, 10000, "View distance: "); - viewDistanceSlider.SetSize(XMFLOAT2(360, hei)); + viewDistanceSlider.SetSize(XMFLOAT2(wid, hei)); viewDistanceSlider.SetPos(XMFLOAT2(x, y += step)); viewDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { auto hair = GetHair(); @@ -176,7 +167,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&framesXInput); framesYInput.Create(""); - framesYInput.SetPos(XMFLOAT2(x + 250, y)); + framesYInput.SetPos(XMFLOAT2(x, y += step)); framesYInput.SetSize(XMFLOAT2(40, hei)); framesYInput.SetText(""); framesYInput.SetTooltip("How many vertical frames there are in the spritesheet."); @@ -208,7 +199,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) AddWidget(&frameCountInput); frameStartInput.Create(""); - frameStartInput.SetPos(XMFLOAT2(x + 250, y)); + frameStartInput.SetPos(XMFLOAT2(x, y += step)); frameStartInput.SetSize(XMFLOAT2(40, hei)); frameStartInput.SetText(""); frameStartInput.SetTooltip("Specifies the first frame of the sheet that can be used."); @@ -225,7 +216,7 @@ void HairParticleWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(200, 50, 0)); + SetMinimized(true); SetVisible(false); SetEntity(entity); @@ -258,7 +249,6 @@ void HairParticleWindow::SetEntity(Entity entity) SetEnabled(false); } - addButton.SetEnabled(true); } wi::HairParticleSystem* HairParticleWindow::GetHair() diff --git a/Editor/HairParticleWindow.h b/Editor/HairParticleWindow.h index 346638adb..4cce0445f 100644 --- a/Editor/HairParticleWindow.h +++ b/Editor/HairParticleWindow.h @@ -18,7 +18,6 @@ public: wi::HairParticleSystem* GetHair(); - wi::gui::Button addButton; wi::gui::ComboBox meshComboBox; wi::gui::Slider lengthSlider; wi::gui::Slider stiffnessSlider; diff --git a/Editor/IKWindow.cpp b/Editor/IKWindow.cpp index 25f46af73..0e3ba0d66 100644 --- a/Editor/IKWindow.cpp +++ b/Editor/IKWindow.cpp @@ -9,24 +9,32 @@ using namespace wi::scene; void IKWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Inverse Kinematics (IK) Window"); - SetSize(XMFLOAT2(400, 150)); + wi::gui::Window::Create("Inverse Kinematics", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(400, 110)); + + closeButton.SetTooltip("Delete InverseKinematicsComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().inverse_kinematics.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 120; float y = 0; - float siz = 200; + float siz = 140; float hei = 18; float step = hei + 2; - createButton.Create("Create"); - createButton.SetTooltip("Create/Remove IK Component to selected entity"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(siz, hei)); - AddWidget(&createButton); - targetCombo.Create("Target: "); targetCombo.SetSize(XMFLOAT2(siz, hei)); - targetCombo.SetPos(XMFLOAT2(x, y += step)); + targetCombo.SetPos(XMFLOAT2(x, y)); targetCombo.SetEnabled(false); targetCombo.OnSelect([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -73,7 +81,7 @@ void IKWindow::Create(EditorComponent* _editor) }); AddWidget(&iterationCountSlider); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 740, 150, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -113,26 +121,4 @@ void IKWindow::SetEntity(Entity entity) SetEnabled(false); } - const TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - createButton.SetEnabled(true); - - if (ik == nullptr) - { - createButton.SetText("Create"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().inverse_kinematics.Create(entity).chain_length = 1; - SetEntity(entity); - }); - } - else - { - createButton.SetText("Remove"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().inverse_kinematics.Remove_KeepSorted(entity); - SetEntity(entity); - }); - } - } } diff --git a/Editor/IKWindow.h b/Editor/IKWindow.h index 4a3b216cd..1edcc8c3c 100644 --- a/Editor/IKWindow.h +++ b/Editor/IKWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::ComboBox targetCombo; wi::gui::CheckBox disabledCheckBox; wi::gui::Slider chainLengthSlider; diff --git a/Editor/IconDefinitions.h b/Editor/IconDefinitions.h new file mode 100644 index 000000000..f362f25d6 --- /dev/null +++ b/Editor/IconDefinitions.h @@ -0,0 +1,33 @@ +#pragma once +#include "IconsFontAwesome6.h" // icon descriptions, source: https://github.com/juliettef/IconFontCppHeaders + +// These map the Font Awesome icon definitions to editor: +// These definitions will help to change icons that are scattered throughout the editor codeL +#define ICON_LAYER ICON_FA_LAYER_GROUP +#define ICON_TRANSFORM ICON_FA_LOCATION_DOT +#define ICON_MESH ICON_FA_CUBE +#define ICON_OBJECT ICON_FA_CUBES +#define ICON_RIGIDBODY ICON_FA_CUBES_STACKED +#define ICON_SOFTBODY ICON_FA_FLAG +#define ICON_EMITTER ICON_FA_FIRE +#define ICON_HAIR ICON_FA_SEEDLING +#define ICON_FORCE ICON_FA_WIND +#define ICON_SOUND ICON_FA_VOLUME_HIGH +#define ICON_DECAL ICON_FA_NOTE_STICKY +#define ICON_CAMERA ICON_FA_VIDEO +#define ICON_ENVIRONMENTPROBE ICON_FA_EARTH_ASIA +#define ICON_ANIMATION ICON_FA_PLAY +#define ICON_ARMATURE ICON_FA_PERSON +#define ICON_POINTLIGHT ICON_FA_LIGHTBULB +#define ICON_SPOTLIGHT ICON_FA_LIGHTBULB // todo: find better one for spotlight +#define ICON_DIRECTIONALLIGHT ICON_FA_SUN +#define ICON_MATERIAL ICON_FA_FILL_DRIP +#define ICON_WEATHER ICON_FA_CLOUD + +#define ICON_TERRAIN ICON_FA_MOUNTAIN_SUN + +#define ICON_SAVE ICON_FA_FLOPPY_DISK +#define ICON_OPEN ICON_FA_FOLDER_OPEN +#define ICON_CLOSE ICON_FA_TRASH +#define ICON_HELP ICON_FA_CIRCLE_QUESTION +#define ICON_EXIT ICON_FA_CIRCLE_XMARK diff --git a/Editor/IconsFontAwesome6.h b/Editor/IconsFontAwesome6.h new file mode 100644 index 000000000..a56c5f5da --- /dev/null +++ b/Editor/IconsFontAwesome6.h @@ -0,0 +1,1396 @@ +// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++ +// from https://github.com/FortAwesome/Font-Awesome/raw/6.x/metadata/icons.yml +// for use with https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-regular-400.ttf, https://github.com/FortAwesome/Font-Awesome/blob/6.x/webfonts/fa-solid-900.ttf +#pragma once + +#define FONT_ICON_FILE_NAME_FAR "fa-regular-400.ttf" +#define FONT_ICON_FILE_NAME_FAS "fa-solid-900.ttf" + +#define ICON_MIN_FA 0xe005 +#define ICON_MAX_16_FA 0xf8ff +#define ICON_MAX_FA 0xf8ff +#define ICON_FA_0 "0" // U+0030 +#define ICON_FA_1 "1" // U+0031 +#define ICON_FA_2 "2" // U+0032 +#define ICON_FA_3 "3" // U+0033 +#define ICON_FA_4 "4" // U+0034 +#define ICON_FA_5 "5" // U+0035 +#define ICON_FA_6 "6" // U+0036 +#define ICON_FA_7 "7" // U+0037 +#define ICON_FA_8 "8" // U+0038 +#define ICON_FA_9 "9" // U+0039 +#define ICON_FA_A "A" // U+0041 +#define ICON_FA_ADDRESS_BOOK "\xef\x8a\xb9" // U+f2b9 +#define ICON_FA_ADDRESS_CARD "\xef\x8a\xbb" // U+f2bb +#define ICON_FA_ALIGN_CENTER "\xef\x80\xb7" // U+f037 +#define ICON_FA_ALIGN_JUSTIFY "\xef\x80\xb9" // U+f039 +#define ICON_FA_ALIGN_LEFT "\xef\x80\xb6" // U+f036 +#define ICON_FA_ALIGN_RIGHT "\xef\x80\xb8" // U+f038 +#define ICON_FA_ANCHOR "\xef\x84\xbd" // U+f13d +#define ICON_FA_ANCHOR_CIRCLE_CHECK "\xee\x92\xaa" // U+e4aa +#define ICON_FA_ANCHOR_CIRCLE_EXCLAMATION "\xee\x92\xab" // U+e4ab +#define ICON_FA_ANCHOR_CIRCLE_XMARK "\xee\x92\xac" // U+e4ac +#define ICON_FA_ANCHOR_LOCK "\xee\x92\xad" // U+e4ad +#define ICON_FA_ANGLE_DOWN "\xef\x84\x87" // U+f107 +#define ICON_FA_ANGLE_LEFT "\xef\x84\x84" // U+f104 +#define ICON_FA_ANGLE_RIGHT "\xef\x84\x85" // U+f105 +#define ICON_FA_ANGLE_UP "\xef\x84\x86" // U+f106 +#define ICON_FA_ANGLES_DOWN "\xef\x84\x83" // U+f103 +#define ICON_FA_ANGLES_LEFT "\xef\x84\x80" // U+f100 +#define ICON_FA_ANGLES_RIGHT "\xef\x84\x81" // U+f101 +#define ICON_FA_ANGLES_UP "\xef\x84\x82" // U+f102 +#define ICON_FA_ANKH "\xef\x99\x84" // U+f644 +#define ICON_FA_APPLE_WHOLE "\xef\x97\x91" // U+f5d1 +#define ICON_FA_ARCHWAY "\xef\x95\x97" // U+f557 +#define ICON_FA_ARROW_DOWN "\xef\x81\xa3" // U+f063 +#define ICON_FA_ARROW_DOWN_1_9 "\xef\x85\xa2" // U+f162 +#define ICON_FA_ARROW_DOWN_9_1 "\xef\xa2\x86" // U+f886 +#define ICON_FA_ARROW_DOWN_A_Z "\xef\x85\x9d" // U+f15d +#define ICON_FA_ARROW_DOWN_LONG "\xef\x85\xb5" // U+f175 +#define ICON_FA_ARROW_DOWN_SHORT_WIDE "\xef\xa2\x84" // U+f884 +#define ICON_FA_ARROW_DOWN_UP_ACROSS_LINE "\xee\x92\xaf" // U+e4af +#define ICON_FA_ARROW_DOWN_UP_LOCK "\xee\x92\xb0" // U+e4b0 +#define ICON_FA_ARROW_DOWN_WIDE_SHORT "\xef\x85\xa0" // U+f160 +#define ICON_FA_ARROW_DOWN_Z_A "\xef\xa2\x81" // U+f881 +#define ICON_FA_ARROW_LEFT "\xef\x81\xa0" // U+f060 +#define ICON_FA_ARROW_LEFT_LONG "\xef\x85\xb7" // U+f177 +#define ICON_FA_ARROW_POINTER "\xef\x89\x85" // U+f245 +#define ICON_FA_ARROW_RIGHT "\xef\x81\xa1" // U+f061 +#define ICON_FA_ARROW_RIGHT_ARROW_LEFT "\xef\x83\xac" // U+f0ec +#define ICON_FA_ARROW_RIGHT_FROM_BRACKET "\xef\x82\x8b" // U+f08b +#define ICON_FA_ARROW_RIGHT_LONG "\xef\x85\xb8" // U+f178 +#define ICON_FA_ARROW_RIGHT_TO_BRACKET "\xef\x82\x90" // U+f090 +#define ICON_FA_ARROW_RIGHT_TO_CITY "\xee\x92\xb3" // U+e4b3 +#define ICON_FA_ARROW_ROTATE_LEFT "\xef\x83\xa2" // U+f0e2 +#define ICON_FA_ARROW_ROTATE_RIGHT "\xef\x80\x9e" // U+f01e +#define ICON_FA_ARROW_TREND_DOWN "\xee\x82\x97" // U+e097 +#define ICON_FA_ARROW_TREND_UP "\xee\x82\x98" // U+e098 +#define ICON_FA_ARROW_TURN_DOWN "\xef\x85\x89" // U+f149 +#define ICON_FA_ARROW_TURN_UP "\xef\x85\x88" // U+f148 +#define ICON_FA_ARROW_UP "\xef\x81\xa2" // U+f062 +#define ICON_FA_ARROW_UP_1_9 "\xef\x85\xa3" // U+f163 +#define ICON_FA_ARROW_UP_9_1 "\xef\xa2\x87" // U+f887 +#define ICON_FA_ARROW_UP_A_Z "\xef\x85\x9e" // U+f15e +#define ICON_FA_ARROW_UP_FROM_BRACKET "\xee\x82\x9a" // U+e09a +#define ICON_FA_ARROW_UP_FROM_GROUND_WATER "\xee\x92\xb5" // U+e4b5 +#define ICON_FA_ARROW_UP_FROM_WATER_PUMP "\xee\x92\xb6" // U+e4b6 +#define ICON_FA_ARROW_UP_LONG "\xef\x85\xb6" // U+f176 +#define ICON_FA_ARROW_UP_RIGHT_DOTS "\xee\x92\xb7" // U+e4b7 +#define ICON_FA_ARROW_UP_RIGHT_FROM_SQUARE "\xef\x82\x8e" // U+f08e +#define ICON_FA_ARROW_UP_SHORT_WIDE "\xef\xa2\x85" // U+f885 +#define ICON_FA_ARROW_UP_WIDE_SHORT "\xef\x85\xa1" // U+f161 +#define ICON_FA_ARROW_UP_Z_A "\xef\xa2\x82" // U+f882 +#define ICON_FA_ARROWS_DOWN_TO_LINE "\xee\x92\xb8" // U+e4b8 +#define ICON_FA_ARROWS_DOWN_TO_PEOPLE "\xee\x92\xb9" // U+e4b9 +#define ICON_FA_ARROWS_LEFT_RIGHT "\xef\x81\xbe" // U+f07e +#define ICON_FA_ARROWS_LEFT_RIGHT_TO_LINE "\xee\x92\xba" // U+e4ba +#define ICON_FA_ARROWS_ROTATE "\xef\x80\xa1" // U+f021 +#define ICON_FA_ARROWS_SPIN "\xee\x92\xbb" // U+e4bb +#define ICON_FA_ARROWS_SPLIT_UP_AND_LEFT "\xee\x92\xbc" // U+e4bc +#define ICON_FA_ARROWS_TO_CIRCLE "\xee\x92\xbd" // U+e4bd +#define ICON_FA_ARROWS_TO_DOT "\xee\x92\xbe" // U+e4be +#define ICON_FA_ARROWS_TO_EYE "\xee\x92\xbf" // U+e4bf +#define ICON_FA_ARROWS_TURN_RIGHT "\xee\x93\x80" // U+e4c0 +#define ICON_FA_ARROWS_TURN_TO_DOTS "\xee\x93\x81" // U+e4c1 +#define ICON_FA_ARROWS_UP_DOWN "\xef\x81\xbd" // U+f07d +#define ICON_FA_ARROWS_UP_DOWN_LEFT_RIGHT "\xef\x81\x87" // U+f047 +#define ICON_FA_ARROWS_UP_TO_LINE "\xee\x93\x82" // U+e4c2 +#define ICON_FA_ASTERISK "*" // U+002a +#define ICON_FA_AT "@" // U+0040 +#define ICON_FA_ATOM "\xef\x97\x92" // U+f5d2 +#define ICON_FA_AUDIO_DESCRIPTION "\xef\x8a\x9e" // U+f29e +#define ICON_FA_AUSTRAL_SIGN "\xee\x82\xa9" // U+e0a9 +#define ICON_FA_AWARD "\xef\x95\x99" // U+f559 +#define ICON_FA_B "B" // U+0042 +#define ICON_FA_BABY "\xef\x9d\xbc" // U+f77c +#define ICON_FA_BABY_CARRIAGE "\xef\x9d\xbd" // U+f77d +#define ICON_FA_BACKWARD "\xef\x81\x8a" // U+f04a +#define ICON_FA_BACKWARD_FAST "\xef\x81\x89" // U+f049 +#define ICON_FA_BACKWARD_STEP "\xef\x81\x88" // U+f048 +#define ICON_FA_BACON "\xef\x9f\xa5" // U+f7e5 +#define ICON_FA_BACTERIA "\xee\x81\x99" // U+e059 +#define ICON_FA_BACTERIUM "\xee\x81\x9a" // U+e05a +#define ICON_FA_BAG_SHOPPING "\xef\x8a\x90" // U+f290 +#define ICON_FA_BAHAI "\xef\x99\xa6" // U+f666 +#define ICON_FA_BAHT_SIGN "\xee\x82\xac" // U+e0ac +#define ICON_FA_BAN "\xef\x81\x9e" // U+f05e +#define ICON_FA_BAN_SMOKING "\xef\x95\x8d" // U+f54d +#define ICON_FA_BANDAGE "\xef\x91\xa2" // U+f462 +#define ICON_FA_BARCODE "\xef\x80\xaa" // U+f02a +#define ICON_FA_BARS "\xef\x83\x89" // U+f0c9 +#define ICON_FA_BARS_PROGRESS "\xef\xa0\xa8" // U+f828 +#define ICON_FA_BARS_STAGGERED "\xef\x95\x90" // U+f550 +#define ICON_FA_BASEBALL "\xef\x90\xb3" // U+f433 +#define ICON_FA_BASEBALL_BAT_BALL "\xef\x90\xb2" // U+f432 +#define ICON_FA_BASKET_SHOPPING "\xef\x8a\x91" // U+f291 +#define ICON_FA_BASKETBALL "\xef\x90\xb4" // U+f434 +#define ICON_FA_BATH "\xef\x8b\x8d" // U+f2cd +#define ICON_FA_BATTERY_EMPTY "\xef\x89\x84" // U+f244 +#define ICON_FA_BATTERY_FULL "\xef\x89\x80" // U+f240 +#define ICON_FA_BATTERY_HALF "\xef\x89\x82" // U+f242 +#define ICON_FA_BATTERY_QUARTER "\xef\x89\x83" // U+f243 +#define ICON_FA_BATTERY_THREE_QUARTERS "\xef\x89\x81" // U+f241 +#define ICON_FA_BED "\xef\x88\xb6" // U+f236 +#define ICON_FA_BED_PULSE "\xef\x92\x87" // U+f487 +#define ICON_FA_BEER_MUG_EMPTY "\xef\x83\xbc" // U+f0fc +#define ICON_FA_BELL "\xef\x83\xb3" // U+f0f3 +#define ICON_FA_BELL_CONCIERGE "\xef\x95\xa2" // U+f562 +#define ICON_FA_BELL_SLASH "\xef\x87\xb6" // U+f1f6 +#define ICON_FA_BEZIER_CURVE "\xef\x95\x9b" // U+f55b +#define ICON_FA_BICYCLE "\xef\x88\x86" // U+f206 +#define ICON_FA_BINOCULARS "\xef\x87\xa5" // U+f1e5 +#define ICON_FA_BIOHAZARD "\xef\x9e\x80" // U+f780 +#define ICON_FA_BITCOIN_SIGN "\xee\x82\xb4" // U+e0b4 +#define ICON_FA_BLENDER "\xef\x94\x97" // U+f517 +#define ICON_FA_BLENDER_PHONE "\xef\x9a\xb6" // U+f6b6 +#define ICON_FA_BLOG "\xef\x9e\x81" // U+f781 +#define ICON_FA_BOLD "\xef\x80\xb2" // U+f032 +#define ICON_FA_BOLT "\xef\x83\xa7" // U+f0e7 +#define ICON_FA_BOLT_LIGHTNING "\xee\x82\xb7" // U+e0b7 +#define ICON_FA_BOMB "\xef\x87\xa2" // U+f1e2 +#define ICON_FA_BONE "\xef\x97\x97" // U+f5d7 +#define ICON_FA_BONG "\xef\x95\x9c" // U+f55c +#define ICON_FA_BOOK "\xef\x80\xad" // U+f02d +#define ICON_FA_BOOK_ATLAS "\xef\x95\x98" // U+f558 +#define ICON_FA_BOOK_BIBLE "\xef\x99\x87" // U+f647 +#define ICON_FA_BOOK_BOOKMARK "\xee\x82\xbb" // U+e0bb +#define ICON_FA_BOOK_JOURNAL_WHILLS "\xef\x99\xaa" // U+f66a +#define ICON_FA_BOOK_MEDICAL "\xef\x9f\xa6" // U+f7e6 +#define ICON_FA_BOOK_OPEN "\xef\x94\x98" // U+f518 +#define ICON_FA_BOOK_OPEN_READER "\xef\x97\x9a" // U+f5da +#define ICON_FA_BOOK_QURAN "\xef\x9a\x87" // U+f687 +#define ICON_FA_BOOK_SKULL "\xef\x9a\xb7" // U+f6b7 +#define ICON_FA_BOOKMARK "\xef\x80\xae" // U+f02e +#define ICON_FA_BORDER_ALL "\xef\xa1\x8c" // U+f84c +#define ICON_FA_BORDER_NONE "\xef\xa1\x90" // U+f850 +#define ICON_FA_BORDER_TOP_LEFT "\xef\xa1\x93" // U+f853 +#define ICON_FA_BORE_HOLE "\xee\x93\x83" // U+e4c3 +#define ICON_FA_BOTTLE_DROPLET "\xee\x93\x84" // U+e4c4 +#define ICON_FA_BOTTLE_WATER "\xee\x93\x85" // U+e4c5 +#define ICON_FA_BOWL_FOOD "\xee\x93\x86" // U+e4c6 +#define ICON_FA_BOWL_RICE "\xee\x8b\xab" // U+e2eb +#define ICON_FA_BOWLING_BALL "\xef\x90\xb6" // U+f436 +#define ICON_FA_BOX "\xef\x91\xa6" // U+f466 +#define ICON_FA_BOX_ARCHIVE "\xef\x86\x87" // U+f187 +#define ICON_FA_BOX_OPEN "\xef\x92\x9e" // U+f49e +#define ICON_FA_BOX_TISSUE "\xee\x81\x9b" // U+e05b +#define ICON_FA_BOXES_PACKING "\xee\x93\x87" // U+e4c7 +#define ICON_FA_BOXES_STACKED "\xef\x91\xa8" // U+f468 +#define ICON_FA_BRAILLE "\xef\x8a\xa1" // U+f2a1 +#define ICON_FA_BRAIN "\xef\x97\x9c" // U+f5dc +#define ICON_FA_BRAZILIAN_REAL_SIGN "\xee\x91\xac" // U+e46c +#define ICON_FA_BREAD_SLICE "\xef\x9f\xac" // U+f7ec +#define ICON_FA_BRIDGE "\xee\x93\x88" // U+e4c8 +#define ICON_FA_BRIDGE_CIRCLE_CHECK "\xee\x93\x89" // U+e4c9 +#define ICON_FA_BRIDGE_CIRCLE_EXCLAMATION "\xee\x93\x8a" // U+e4ca +#define ICON_FA_BRIDGE_CIRCLE_XMARK "\xee\x93\x8b" // U+e4cb +#define ICON_FA_BRIDGE_LOCK "\xee\x93\x8c" // U+e4cc +#define ICON_FA_BRIDGE_WATER "\xee\x93\x8e" // U+e4ce +#define ICON_FA_BRIEFCASE "\xef\x82\xb1" // U+f0b1 +#define ICON_FA_BRIEFCASE_MEDICAL "\xef\x91\xa9" // U+f469 +#define ICON_FA_BROOM "\xef\x94\x9a" // U+f51a +#define ICON_FA_BROOM_BALL "\xef\x91\x98" // U+f458 +#define ICON_FA_BRUSH "\xef\x95\x9d" // U+f55d +#define ICON_FA_BUCKET "\xee\x93\x8f" // U+e4cf +#define ICON_FA_BUG "\xef\x86\x88" // U+f188 +#define ICON_FA_BUG_SLASH "\xee\x92\x90" // U+e490 +#define ICON_FA_BUGS "\xee\x93\x90" // U+e4d0 +#define ICON_FA_BUILDING "\xef\x86\xad" // U+f1ad +#define ICON_FA_BUILDING_CIRCLE_ARROW_RIGHT "\xee\x93\x91" // U+e4d1 +#define ICON_FA_BUILDING_CIRCLE_CHECK "\xee\x93\x92" // U+e4d2 +#define ICON_FA_BUILDING_CIRCLE_EXCLAMATION "\xee\x93\x93" // U+e4d3 +#define ICON_FA_BUILDING_CIRCLE_XMARK "\xee\x93\x94" // U+e4d4 +#define ICON_FA_BUILDING_COLUMNS "\xef\x86\x9c" // U+f19c +#define ICON_FA_BUILDING_FLAG "\xee\x93\x95" // U+e4d5 +#define ICON_FA_BUILDING_LOCK "\xee\x93\x96" // U+e4d6 +#define ICON_FA_BUILDING_NGO "\xee\x93\x97" // U+e4d7 +#define ICON_FA_BUILDING_SHIELD "\xee\x93\x98" // U+e4d8 +#define ICON_FA_BUILDING_UN "\xee\x93\x99" // U+e4d9 +#define ICON_FA_BUILDING_USER "\xee\x93\x9a" // U+e4da +#define ICON_FA_BUILDING_WHEAT "\xee\x93\x9b" // U+e4db +#define ICON_FA_BULLHORN "\xef\x82\xa1" // U+f0a1 +#define ICON_FA_BULLSEYE "\xef\x85\x80" // U+f140 +#define ICON_FA_BURGER "\xef\xa0\x85" // U+f805 +#define ICON_FA_BURST "\xee\x93\x9c" // U+e4dc +#define ICON_FA_BUS "\xef\x88\x87" // U+f207 +#define ICON_FA_BUS_SIMPLE "\xef\x95\x9e" // U+f55e +#define ICON_FA_BUSINESS_TIME "\xef\x99\x8a" // U+f64a +#define ICON_FA_C "C" // U+0043 +#define ICON_FA_CAKE_CANDLES "\xef\x87\xbd" // U+f1fd +#define ICON_FA_CALCULATOR "\xef\x87\xac" // U+f1ec +#define ICON_FA_CALENDAR "\xef\x84\xb3" // U+f133 +#define ICON_FA_CALENDAR_CHECK "\xef\x89\xb4" // U+f274 +#define ICON_FA_CALENDAR_DAY "\xef\x9e\x83" // U+f783 +#define ICON_FA_CALENDAR_DAYS "\xef\x81\xb3" // U+f073 +#define ICON_FA_CALENDAR_MINUS "\xef\x89\xb2" // U+f272 +#define ICON_FA_CALENDAR_PLUS "\xef\x89\xb1" // U+f271 +#define ICON_FA_CALENDAR_WEEK "\xef\x9e\x84" // U+f784 +#define ICON_FA_CALENDAR_XMARK "\xef\x89\xb3" // U+f273 +#define ICON_FA_CAMERA "\xef\x80\xb0" // U+f030 +#define ICON_FA_CAMERA_RETRO "\xef\x82\x83" // U+f083 +#define ICON_FA_CAMERA_ROTATE "\xee\x83\x98" // U+e0d8 +#define ICON_FA_CAMPGROUND "\xef\x9a\xbb" // U+f6bb +#define ICON_FA_CANDY_CANE "\xef\x9e\x86" // U+f786 +#define ICON_FA_CANNABIS "\xef\x95\x9f" // U+f55f +#define ICON_FA_CAPSULES "\xef\x91\xab" // U+f46b +#define ICON_FA_CAR "\xef\x86\xb9" // U+f1b9 +#define ICON_FA_CAR_BATTERY "\xef\x97\x9f" // U+f5df +#define ICON_FA_CAR_BURST "\xef\x97\xa1" // U+f5e1 +#define ICON_FA_CAR_ON "\xee\x93\x9d" // U+e4dd +#define ICON_FA_CAR_REAR "\xef\x97\x9e" // U+f5de +#define ICON_FA_CAR_SIDE "\xef\x97\xa4" // U+f5e4 +#define ICON_FA_CAR_TUNNEL "\xee\x93\x9e" // U+e4de +#define ICON_FA_CARAVAN "\xef\xa3\xbf" // U+f8ff +#define ICON_FA_CARET_DOWN "\xef\x83\x97" // U+f0d7 +#define ICON_FA_CARET_LEFT "\xef\x83\x99" // U+f0d9 +#define ICON_FA_CARET_RIGHT "\xef\x83\x9a" // U+f0da +#define ICON_FA_CARET_UP "\xef\x83\x98" // U+f0d8 +#define ICON_FA_CARROT "\xef\x9e\x87" // U+f787 +#define ICON_FA_CART_ARROW_DOWN "\xef\x88\x98" // U+f218 +#define ICON_FA_CART_FLATBED "\xef\x91\xb4" // U+f474 +#define ICON_FA_CART_FLATBED_SUITCASE "\xef\x96\x9d" // U+f59d +#define ICON_FA_CART_PLUS "\xef\x88\x97" // U+f217 +#define ICON_FA_CART_SHOPPING "\xef\x81\xba" // U+f07a +#define ICON_FA_CASH_REGISTER "\xef\x9e\x88" // U+f788 +#define ICON_FA_CAT "\xef\x9a\xbe" // U+f6be +#define ICON_FA_CEDI_SIGN "\xee\x83\x9f" // U+e0df +#define ICON_FA_CENT_SIGN "\xee\x8f\xb5" // U+e3f5 +#define ICON_FA_CERTIFICATE "\xef\x82\xa3" // U+f0a3 +#define ICON_FA_CHAIR "\xef\x9b\x80" // U+f6c0 +#define ICON_FA_CHALKBOARD "\xef\x94\x9b" // U+f51b +#define ICON_FA_CHALKBOARD_USER "\xef\x94\x9c" // U+f51c +#define ICON_FA_CHAMPAGNE_GLASSES "\xef\x9e\x9f" // U+f79f +#define ICON_FA_CHARGING_STATION "\xef\x97\xa7" // U+f5e7 +#define ICON_FA_CHART_AREA "\xef\x87\xbe" // U+f1fe +#define ICON_FA_CHART_BAR "\xef\x82\x80" // U+f080 +#define ICON_FA_CHART_COLUMN "\xee\x83\xa3" // U+e0e3 +#define ICON_FA_CHART_GANTT "\xee\x83\xa4" // U+e0e4 +#define ICON_FA_CHART_LINE "\xef\x88\x81" // U+f201 +#define ICON_FA_CHART_PIE "\xef\x88\x80" // U+f200 +#define ICON_FA_CHART_SIMPLE "\xee\x91\xb3" // U+e473 +#define ICON_FA_CHECK "\xef\x80\x8c" // U+f00c +#define ICON_FA_CHECK_DOUBLE "\xef\x95\xa0" // U+f560 +#define ICON_FA_CHECK_TO_SLOT "\xef\x9d\xb2" // U+f772 +#define ICON_FA_CHEESE "\xef\x9f\xaf" // U+f7ef +#define ICON_FA_CHESS "\xef\x90\xb9" // U+f439 +#define ICON_FA_CHESS_BISHOP "\xef\x90\xba" // U+f43a +#define ICON_FA_CHESS_BOARD "\xef\x90\xbc" // U+f43c +#define ICON_FA_CHESS_KING "\xef\x90\xbf" // U+f43f +#define ICON_FA_CHESS_KNIGHT "\xef\x91\x81" // U+f441 +#define ICON_FA_CHESS_PAWN "\xef\x91\x83" // U+f443 +#define ICON_FA_CHESS_QUEEN "\xef\x91\x85" // U+f445 +#define ICON_FA_CHESS_ROOK "\xef\x91\x87" // U+f447 +#define ICON_FA_CHEVRON_DOWN "\xef\x81\xb8" // U+f078 +#define ICON_FA_CHEVRON_LEFT "\xef\x81\x93" // U+f053 +#define ICON_FA_CHEVRON_RIGHT "\xef\x81\x94" // U+f054 +#define ICON_FA_CHEVRON_UP "\xef\x81\xb7" // U+f077 +#define ICON_FA_CHILD "\xef\x86\xae" // U+f1ae +#define ICON_FA_CHILD_DRESS "\xee\x96\x9c" // U+e59c +#define ICON_FA_CHILD_REACHING "\xee\x96\x9d" // U+e59d +#define ICON_FA_CHILD_RIFLE "\xee\x93\xa0" // U+e4e0 +#define ICON_FA_CHILDREN "\xee\x93\xa1" // U+e4e1 +#define ICON_FA_CHURCH "\xef\x94\x9d" // U+f51d +#define ICON_FA_CIRCLE "\xef\x84\x91" // U+f111 +#define ICON_FA_CIRCLE_ARROW_DOWN "\xef\x82\xab" // U+f0ab +#define ICON_FA_CIRCLE_ARROW_LEFT "\xef\x82\xa8" // U+f0a8 +#define ICON_FA_CIRCLE_ARROW_RIGHT "\xef\x82\xa9" // U+f0a9 +#define ICON_FA_CIRCLE_ARROW_UP "\xef\x82\xaa" // U+f0aa +#define ICON_FA_CIRCLE_CHECK "\xef\x81\x98" // U+f058 +#define ICON_FA_CIRCLE_CHEVRON_DOWN "\xef\x84\xba" // U+f13a +#define ICON_FA_CIRCLE_CHEVRON_LEFT "\xef\x84\xb7" // U+f137 +#define ICON_FA_CIRCLE_CHEVRON_RIGHT "\xef\x84\xb8" // U+f138 +#define ICON_FA_CIRCLE_CHEVRON_UP "\xef\x84\xb9" // U+f139 +#define ICON_FA_CIRCLE_DOLLAR_TO_SLOT "\xef\x92\xb9" // U+f4b9 +#define ICON_FA_CIRCLE_DOT "\xef\x86\x92" // U+f192 +#define ICON_FA_CIRCLE_DOWN "\xef\x8d\x98" // U+f358 +#define ICON_FA_CIRCLE_EXCLAMATION "\xef\x81\xaa" // U+f06a +#define ICON_FA_CIRCLE_H "\xef\x91\xbe" // U+f47e +#define ICON_FA_CIRCLE_HALF_STROKE "\xef\x81\x82" // U+f042 +#define ICON_FA_CIRCLE_INFO "\xef\x81\x9a" // U+f05a +#define ICON_FA_CIRCLE_LEFT "\xef\x8d\x99" // U+f359 +#define ICON_FA_CIRCLE_MINUS "\xef\x81\x96" // U+f056 +#define ICON_FA_CIRCLE_NODES "\xee\x93\xa2" // U+e4e2 +#define ICON_FA_CIRCLE_NOTCH "\xef\x87\x8e" // U+f1ce +#define ICON_FA_CIRCLE_PAUSE "\xef\x8a\x8b" // U+f28b +#define ICON_FA_CIRCLE_PLAY "\xef\x85\x84" // U+f144 +#define ICON_FA_CIRCLE_PLUS "\xef\x81\x95" // U+f055 +#define ICON_FA_CIRCLE_QUESTION "\xef\x81\x99" // U+f059 +#define ICON_FA_CIRCLE_RADIATION "\xef\x9e\xba" // U+f7ba +#define ICON_FA_CIRCLE_RIGHT "\xef\x8d\x9a" // U+f35a +#define ICON_FA_CIRCLE_STOP "\xef\x8a\x8d" // U+f28d +#define ICON_FA_CIRCLE_UP "\xef\x8d\x9b" // U+f35b +#define ICON_FA_CIRCLE_USER "\xef\x8a\xbd" // U+f2bd +#define ICON_FA_CIRCLE_XMARK "\xef\x81\x97" // U+f057 +#define ICON_FA_CITY "\xef\x99\x8f" // U+f64f +#define ICON_FA_CLAPPERBOARD "\xee\x84\xb1" // U+e131 +#define ICON_FA_CLIPBOARD "\xef\x8c\xa8" // U+f328 +#define ICON_FA_CLIPBOARD_CHECK "\xef\x91\xac" // U+f46c +#define ICON_FA_CLIPBOARD_LIST "\xef\x91\xad" // U+f46d +#define ICON_FA_CLIPBOARD_QUESTION "\xee\x93\xa3" // U+e4e3 +#define ICON_FA_CLIPBOARD_USER "\xef\x9f\xb3" // U+f7f3 +#define ICON_FA_CLOCK "\xef\x80\x97" // U+f017 +#define ICON_FA_CLOCK_ROTATE_LEFT "\xef\x87\x9a" // U+f1da +#define ICON_FA_CLONE "\xef\x89\x8d" // U+f24d +#define ICON_FA_CLOSED_CAPTIONING "\xef\x88\x8a" // U+f20a +#define ICON_FA_CLOUD "\xef\x83\x82" // U+f0c2 +#define ICON_FA_CLOUD_ARROW_DOWN "\xef\x83\xad" // U+f0ed +#define ICON_FA_CLOUD_ARROW_UP "\xef\x83\xae" // U+f0ee +#define ICON_FA_CLOUD_BOLT "\xef\x9d\xac" // U+f76c +#define ICON_FA_CLOUD_MEATBALL "\xef\x9c\xbb" // U+f73b +#define ICON_FA_CLOUD_MOON "\xef\x9b\x83" // U+f6c3 +#define ICON_FA_CLOUD_MOON_RAIN "\xef\x9c\xbc" // U+f73c +#define ICON_FA_CLOUD_RAIN "\xef\x9c\xbd" // U+f73d +#define ICON_FA_CLOUD_SHOWERS_HEAVY "\xef\x9d\x80" // U+f740 +#define ICON_FA_CLOUD_SHOWERS_WATER "\xee\x93\xa4" // U+e4e4 +#define ICON_FA_CLOUD_SUN "\xef\x9b\x84" // U+f6c4 +#define ICON_FA_CLOUD_SUN_RAIN "\xef\x9d\x83" // U+f743 +#define ICON_FA_CLOVER "\xee\x84\xb9" // U+e139 +#define ICON_FA_CODE "\xef\x84\xa1" // U+f121 +#define ICON_FA_CODE_BRANCH "\xef\x84\xa6" // U+f126 +#define ICON_FA_CODE_COMMIT "\xef\x8e\x86" // U+f386 +#define ICON_FA_CODE_COMPARE "\xee\x84\xba" // U+e13a +#define ICON_FA_CODE_FORK "\xee\x84\xbb" // U+e13b +#define ICON_FA_CODE_MERGE "\xef\x8e\x87" // U+f387 +#define ICON_FA_CODE_PULL_REQUEST "\xee\x84\xbc" // U+e13c +#define ICON_FA_COINS "\xef\x94\x9e" // U+f51e +#define ICON_FA_COLON_SIGN "\xee\x85\x80" // U+e140 +#define ICON_FA_COMMENT "\xef\x81\xb5" // U+f075 +#define ICON_FA_COMMENT_DOLLAR "\xef\x99\x91" // U+f651 +#define ICON_FA_COMMENT_DOTS "\xef\x92\xad" // U+f4ad +#define ICON_FA_COMMENT_MEDICAL "\xef\x9f\xb5" // U+f7f5 +#define ICON_FA_COMMENT_SLASH "\xef\x92\xb3" // U+f4b3 +#define ICON_FA_COMMENT_SMS "\xef\x9f\x8d" // U+f7cd +#define ICON_FA_COMMENTS "\xef\x82\x86" // U+f086 +#define ICON_FA_COMMENTS_DOLLAR "\xef\x99\x93" // U+f653 +#define ICON_FA_COMPACT_DISC "\xef\x94\x9f" // U+f51f +#define ICON_FA_COMPASS "\xef\x85\x8e" // U+f14e +#define ICON_FA_COMPASS_DRAFTING "\xef\x95\xa8" // U+f568 +#define ICON_FA_COMPRESS "\xef\x81\xa6" // U+f066 +#define ICON_FA_COMPUTER "\xee\x93\xa5" // U+e4e5 +#define ICON_FA_COMPUTER_MOUSE "\xef\xa3\x8c" // U+f8cc +#define ICON_FA_COOKIE "\xef\x95\xa3" // U+f563 +#define ICON_FA_COOKIE_BITE "\xef\x95\xa4" // U+f564 +#define ICON_FA_COPY "\xef\x83\x85" // U+f0c5 +#define ICON_FA_COPYRIGHT "\xef\x87\xb9" // U+f1f9 +#define ICON_FA_COUCH "\xef\x92\xb8" // U+f4b8 +#define ICON_FA_COW "\xef\x9b\x88" // U+f6c8 +#define ICON_FA_CREDIT_CARD "\xef\x82\x9d" // U+f09d +#define ICON_FA_CROP "\xef\x84\xa5" // U+f125 +#define ICON_FA_CROP_SIMPLE "\xef\x95\xa5" // U+f565 +#define ICON_FA_CROSS "\xef\x99\x94" // U+f654 +#define ICON_FA_CROSSHAIRS "\xef\x81\x9b" // U+f05b +#define ICON_FA_CROW "\xef\x94\xa0" // U+f520 +#define ICON_FA_CROWN "\xef\x94\xa1" // U+f521 +#define ICON_FA_CRUTCH "\xef\x9f\xb7" // U+f7f7 +#define ICON_FA_CRUZEIRO_SIGN "\xee\x85\x92" // U+e152 +#define ICON_FA_CUBE "\xef\x86\xb2" // U+f1b2 +#define ICON_FA_CUBES "\xef\x86\xb3" // U+f1b3 +#define ICON_FA_CUBES_STACKED "\xee\x93\xa6" // U+e4e6 +#define ICON_FA_D "D" // U+0044 +#define ICON_FA_DATABASE "\xef\x87\x80" // U+f1c0 +#define ICON_FA_DELETE_LEFT "\xef\x95\x9a" // U+f55a +#define ICON_FA_DEMOCRAT "\xef\x9d\x87" // U+f747 +#define ICON_FA_DESKTOP "\xef\x8e\x90" // U+f390 +#define ICON_FA_DHARMACHAKRA "\xef\x99\x95" // U+f655 +#define ICON_FA_DIAGRAM_NEXT "\xee\x91\xb6" // U+e476 +#define ICON_FA_DIAGRAM_PREDECESSOR "\xee\x91\xb7" // U+e477 +#define ICON_FA_DIAGRAM_PROJECT "\xef\x95\x82" // U+f542 +#define ICON_FA_DIAGRAM_SUCCESSOR "\xee\x91\xba" // U+e47a +#define ICON_FA_DIAMOND "\xef\x88\x99" // U+f219 +#define ICON_FA_DIAMOND_TURN_RIGHT "\xef\x97\xab" // U+f5eb +#define ICON_FA_DICE "\xef\x94\xa2" // U+f522 +#define ICON_FA_DICE_D20 "\xef\x9b\x8f" // U+f6cf +#define ICON_FA_DICE_D6 "\xef\x9b\x91" // U+f6d1 +#define ICON_FA_DICE_FIVE "\xef\x94\xa3" // U+f523 +#define ICON_FA_DICE_FOUR "\xef\x94\xa4" // U+f524 +#define ICON_FA_DICE_ONE "\xef\x94\xa5" // U+f525 +#define ICON_FA_DICE_SIX "\xef\x94\xa6" // U+f526 +#define ICON_FA_DICE_THREE "\xef\x94\xa7" // U+f527 +#define ICON_FA_DICE_TWO "\xef\x94\xa8" // U+f528 +#define ICON_FA_DISEASE "\xef\x9f\xba" // U+f7fa +#define ICON_FA_DISPLAY "\xee\x85\xa3" // U+e163 +#define ICON_FA_DIVIDE "\xef\x94\xa9" // U+f529 +#define ICON_FA_DNA "\xef\x91\xb1" // U+f471 +#define ICON_FA_DOG "\xef\x9b\x93" // U+f6d3 +#define ICON_FA_DOLLAR_SIGN "$" // U+0024 +#define ICON_FA_DOLLY "\xef\x91\xb2" // U+f472 +#define ICON_FA_DONG_SIGN "\xee\x85\xa9" // U+e169 +#define ICON_FA_DOOR_CLOSED "\xef\x94\xaa" // U+f52a +#define ICON_FA_DOOR_OPEN "\xef\x94\xab" // U+f52b +#define ICON_FA_DOVE "\xef\x92\xba" // U+f4ba +#define ICON_FA_DOWN_LEFT_AND_UP_RIGHT_TO_CENTER "\xef\x90\xa2" // U+f422 +#define ICON_FA_DOWN_LONG "\xef\x8c\x89" // U+f309 +#define ICON_FA_DOWNLOAD "\xef\x80\x99" // U+f019 +#define ICON_FA_DRAGON "\xef\x9b\x95" // U+f6d5 +#define ICON_FA_DRAW_POLYGON "\xef\x97\xae" // U+f5ee +#define ICON_FA_DROPLET "\xef\x81\x83" // U+f043 +#define ICON_FA_DROPLET_SLASH "\xef\x97\x87" // U+f5c7 +#define ICON_FA_DRUM "\xef\x95\xa9" // U+f569 +#define ICON_FA_DRUM_STEELPAN "\xef\x95\xaa" // U+f56a +#define ICON_FA_DRUMSTICK_BITE "\xef\x9b\x97" // U+f6d7 +#define ICON_FA_DUMBBELL "\xef\x91\x8b" // U+f44b +#define ICON_FA_DUMPSTER "\xef\x9e\x93" // U+f793 +#define ICON_FA_DUMPSTER_FIRE "\xef\x9e\x94" // U+f794 +#define ICON_FA_DUNGEON "\xef\x9b\x99" // U+f6d9 +#define ICON_FA_E "E" // U+0045 +#define ICON_FA_EAR_DEAF "\xef\x8a\xa4" // U+f2a4 +#define ICON_FA_EAR_LISTEN "\xef\x8a\xa2" // U+f2a2 +#define ICON_FA_EARTH_AFRICA "\xef\x95\xbc" // U+f57c +#define ICON_FA_EARTH_AMERICAS "\xef\x95\xbd" // U+f57d +#define ICON_FA_EARTH_ASIA "\xef\x95\xbe" // U+f57e +#define ICON_FA_EARTH_EUROPE "\xef\x9e\xa2" // U+f7a2 +#define ICON_FA_EARTH_OCEANIA "\xee\x91\xbb" // U+e47b +#define ICON_FA_EGG "\xef\x9f\xbb" // U+f7fb +#define ICON_FA_EJECT "\xef\x81\x92" // U+f052 +#define ICON_FA_ELEVATOR "\xee\x85\xad" // U+e16d +#define ICON_FA_ELLIPSIS "\xef\x85\x81" // U+f141 +#define ICON_FA_ELLIPSIS_VERTICAL "\xef\x85\x82" // U+f142 +#define ICON_FA_ENVELOPE "\xef\x83\xa0" // U+f0e0 +#define ICON_FA_ENVELOPE_CIRCLE_CHECK "\xee\x93\xa8" // U+e4e8 +#define ICON_FA_ENVELOPE_OPEN "\xef\x8a\xb6" // U+f2b6 +#define ICON_FA_ENVELOPE_OPEN_TEXT "\xef\x99\x98" // U+f658 +#define ICON_FA_ENVELOPES_BULK "\xef\x99\xb4" // U+f674 +#define ICON_FA_EQUALS "=" // U+003d +#define ICON_FA_ERASER "\xef\x84\xad" // U+f12d +#define ICON_FA_ETHERNET "\xef\x9e\x96" // U+f796 +#define ICON_FA_EURO_SIGN "\xef\x85\x93" // U+f153 +#define ICON_FA_EXCLAMATION "!" // U+0021 +#define ICON_FA_EXPAND "\xef\x81\xa5" // U+f065 +#define ICON_FA_EXPLOSION "\xee\x93\xa9" // U+e4e9 +#define ICON_FA_EYE "\xef\x81\xae" // U+f06e +#define ICON_FA_EYE_DROPPER "\xef\x87\xbb" // U+f1fb +#define ICON_FA_EYE_LOW_VISION "\xef\x8a\xa8" // U+f2a8 +#define ICON_FA_EYE_SLASH "\xef\x81\xb0" // U+f070 +#define ICON_FA_F "F" // U+0046 +#define ICON_FA_FACE_ANGRY "\xef\x95\x96" // U+f556 +#define ICON_FA_FACE_DIZZY "\xef\x95\xa7" // U+f567 +#define ICON_FA_FACE_FLUSHED "\xef\x95\xb9" // U+f579 +#define ICON_FA_FACE_FROWN "\xef\x84\x99" // U+f119 +#define ICON_FA_FACE_FROWN_OPEN "\xef\x95\xba" // U+f57a +#define ICON_FA_FACE_GRIMACE "\xef\x95\xbf" // U+f57f +#define ICON_FA_FACE_GRIN "\xef\x96\x80" // U+f580 +#define ICON_FA_FACE_GRIN_BEAM "\xef\x96\x82" // U+f582 +#define ICON_FA_FACE_GRIN_BEAM_SWEAT "\xef\x96\x83" // U+f583 +#define ICON_FA_FACE_GRIN_HEARTS "\xef\x96\x84" // U+f584 +#define ICON_FA_FACE_GRIN_SQUINT "\xef\x96\x85" // U+f585 +#define ICON_FA_FACE_GRIN_SQUINT_TEARS "\xef\x96\x86" // U+f586 +#define ICON_FA_FACE_GRIN_STARS "\xef\x96\x87" // U+f587 +#define ICON_FA_FACE_GRIN_TEARS "\xef\x96\x88" // U+f588 +#define ICON_FA_FACE_GRIN_TONGUE "\xef\x96\x89" // U+f589 +#define ICON_FA_FACE_GRIN_TONGUE_SQUINT "\xef\x96\x8a" // U+f58a +#define ICON_FA_FACE_GRIN_TONGUE_WINK "\xef\x96\x8b" // U+f58b +#define ICON_FA_FACE_GRIN_WIDE "\xef\x96\x81" // U+f581 +#define ICON_FA_FACE_GRIN_WINK "\xef\x96\x8c" // U+f58c +#define ICON_FA_FACE_KISS "\xef\x96\x96" // U+f596 +#define ICON_FA_FACE_KISS_BEAM "\xef\x96\x97" // U+f597 +#define ICON_FA_FACE_KISS_WINK_HEART "\xef\x96\x98" // U+f598 +#define ICON_FA_FACE_LAUGH "\xef\x96\x99" // U+f599 +#define ICON_FA_FACE_LAUGH_BEAM "\xef\x96\x9a" // U+f59a +#define ICON_FA_FACE_LAUGH_SQUINT "\xef\x96\x9b" // U+f59b +#define ICON_FA_FACE_LAUGH_WINK "\xef\x96\x9c" // U+f59c +#define ICON_FA_FACE_MEH "\xef\x84\x9a" // U+f11a +#define ICON_FA_FACE_MEH_BLANK "\xef\x96\xa4" // U+f5a4 +#define ICON_FA_FACE_ROLLING_EYES "\xef\x96\xa5" // U+f5a5 +#define ICON_FA_FACE_SAD_CRY "\xef\x96\xb3" // U+f5b3 +#define ICON_FA_FACE_SAD_TEAR "\xef\x96\xb4" // U+f5b4 +#define ICON_FA_FACE_SMILE "\xef\x84\x98" // U+f118 +#define ICON_FA_FACE_SMILE_BEAM "\xef\x96\xb8" // U+f5b8 +#define ICON_FA_FACE_SMILE_WINK "\xef\x93\x9a" // U+f4da +#define ICON_FA_FACE_SURPRISE "\xef\x97\x82" // U+f5c2 +#define ICON_FA_FACE_TIRED "\xef\x97\x88" // U+f5c8 +#define ICON_FA_FAN "\xef\xa1\xa3" // U+f863 +#define ICON_FA_FAUCET "\xee\x80\x85" // U+e005 +#define ICON_FA_FAUCET_DRIP "\xee\x80\x86" // U+e006 +#define ICON_FA_FAX "\xef\x86\xac" // U+f1ac +#define ICON_FA_FEATHER "\xef\x94\xad" // U+f52d +#define ICON_FA_FEATHER_POINTED "\xef\x95\xab" // U+f56b +#define ICON_FA_FERRY "\xee\x93\xaa" // U+e4ea +#define ICON_FA_FILE "\xef\x85\x9b" // U+f15b +#define ICON_FA_FILE_ARROW_DOWN "\xef\x95\xad" // U+f56d +#define ICON_FA_FILE_ARROW_UP "\xef\x95\xb4" // U+f574 +#define ICON_FA_FILE_AUDIO "\xef\x87\x87" // U+f1c7 +#define ICON_FA_FILE_CIRCLE_CHECK "\xee\x92\x93" // U+e493 +#define ICON_FA_FILE_CIRCLE_EXCLAMATION "\xee\x93\xab" // U+e4eb +#define ICON_FA_FILE_CIRCLE_MINUS "\xee\x93\xad" // U+e4ed +#define ICON_FA_FILE_CIRCLE_PLUS "\xee\x93\xae" // U+e4ee +#define ICON_FA_FILE_CIRCLE_QUESTION "\xee\x93\xaf" // U+e4ef +#define ICON_FA_FILE_CIRCLE_XMARK "\xee\x92\x94" // U+e494 +#define ICON_FA_FILE_CODE "\xef\x87\x89" // U+f1c9 +#define ICON_FA_FILE_CONTRACT "\xef\x95\xac" // U+f56c +#define ICON_FA_FILE_CSV "\xef\x9b\x9d" // U+f6dd +#define ICON_FA_FILE_EXCEL "\xef\x87\x83" // U+f1c3 +#define ICON_FA_FILE_EXPORT "\xef\x95\xae" // U+f56e +#define ICON_FA_FILE_IMAGE "\xef\x87\x85" // U+f1c5 +#define ICON_FA_FILE_IMPORT "\xef\x95\xaf" // U+f56f +#define ICON_FA_FILE_INVOICE "\xef\x95\xb0" // U+f570 +#define ICON_FA_FILE_INVOICE_DOLLAR "\xef\x95\xb1" // U+f571 +#define ICON_FA_FILE_LINES "\xef\x85\x9c" // U+f15c +#define ICON_FA_FILE_MEDICAL "\xef\x91\xb7" // U+f477 +#define ICON_FA_FILE_PDF "\xef\x87\x81" // U+f1c1 +#define ICON_FA_FILE_PEN "\xef\x8c\x9c" // U+f31c +#define ICON_FA_FILE_POWERPOINT "\xef\x87\x84" // U+f1c4 +#define ICON_FA_FILE_PRESCRIPTION "\xef\x95\xb2" // U+f572 +#define ICON_FA_FILE_SHIELD "\xee\x93\xb0" // U+e4f0 +#define ICON_FA_FILE_SIGNATURE "\xef\x95\xb3" // U+f573 +#define ICON_FA_FILE_VIDEO "\xef\x87\x88" // U+f1c8 +#define ICON_FA_FILE_WAVEFORM "\xef\x91\xb8" // U+f478 +#define ICON_FA_FILE_WORD "\xef\x87\x82" // U+f1c2 +#define ICON_FA_FILE_ZIPPER "\xef\x87\x86" // U+f1c6 +#define ICON_FA_FILL "\xef\x95\xb5" // U+f575 +#define ICON_FA_FILL_DRIP "\xef\x95\xb6" // U+f576 +#define ICON_FA_FILM "\xef\x80\x88" // U+f008 +#define ICON_FA_FILTER "\xef\x82\xb0" // U+f0b0 +#define ICON_FA_FILTER_CIRCLE_DOLLAR "\xef\x99\xa2" // U+f662 +#define ICON_FA_FILTER_CIRCLE_XMARK "\xee\x85\xbb" // U+e17b +#define ICON_FA_FINGERPRINT "\xef\x95\xb7" // U+f577 +#define ICON_FA_FIRE "\xef\x81\xad" // U+f06d +#define ICON_FA_FIRE_BURNER "\xee\x93\xb1" // U+e4f1 +#define ICON_FA_FIRE_EXTINGUISHER "\xef\x84\xb4" // U+f134 +#define ICON_FA_FIRE_FLAME_CURVED "\xef\x9f\xa4" // U+f7e4 +#define ICON_FA_FIRE_FLAME_SIMPLE "\xef\x91\xaa" // U+f46a +#define ICON_FA_FISH "\xef\x95\xb8" // U+f578 +#define ICON_FA_FISH_FINS "\xee\x93\xb2" // U+e4f2 +#define ICON_FA_FLAG "\xef\x80\xa4" // U+f024 +#define ICON_FA_FLAG_CHECKERED "\xef\x84\x9e" // U+f11e +#define ICON_FA_FLAG_USA "\xef\x9d\x8d" // U+f74d +#define ICON_FA_FLASK "\xef\x83\x83" // U+f0c3 +#define ICON_FA_FLASK_VIAL "\xee\x93\xb3" // U+e4f3 +#define ICON_FA_FLOPPY_DISK "\xef\x83\x87" // U+f0c7 +#define ICON_FA_FLORIN_SIGN "\xee\x86\x84" // U+e184 +#define ICON_FA_FOLDER "\xef\x81\xbb" // U+f07b +#define ICON_FA_FOLDER_CLOSED "\xee\x86\x85" // U+e185 +#define ICON_FA_FOLDER_MINUS "\xef\x99\x9d" // U+f65d +#define ICON_FA_FOLDER_OPEN "\xef\x81\xbc" // U+f07c +#define ICON_FA_FOLDER_PLUS "\xef\x99\x9e" // U+f65e +#define ICON_FA_FOLDER_TREE "\xef\xa0\x82" // U+f802 +#define ICON_FA_FONT "\xef\x80\xb1" // U+f031 +#define ICON_FA_FONT_AWESOME "\xef\x8a\xb4" // U+f2b4 +#define ICON_FA_FOOTBALL "\xef\x91\x8e" // U+f44e +#define ICON_FA_FORWARD "\xef\x81\x8e" // U+f04e +#define ICON_FA_FORWARD_FAST "\xef\x81\x90" // U+f050 +#define ICON_FA_FORWARD_STEP "\xef\x81\x91" // U+f051 +#define ICON_FA_FRANC_SIGN "\xee\x86\x8f" // U+e18f +#define ICON_FA_FROG "\xef\x94\xae" // U+f52e +#define ICON_FA_FUTBOL "\xef\x87\xa3" // U+f1e3 +#define ICON_FA_G "G" // U+0047 +#define ICON_FA_GAMEPAD "\xef\x84\x9b" // U+f11b +#define ICON_FA_GAS_PUMP "\xef\x94\xaf" // U+f52f +#define ICON_FA_GAUGE "\xef\x98\xa4" // U+f624 +#define ICON_FA_GAUGE_HIGH "\xef\x98\xa5" // U+f625 +#define ICON_FA_GAUGE_SIMPLE "\xef\x98\xa9" // U+f629 +#define ICON_FA_GAUGE_SIMPLE_HIGH "\xef\x98\xaa" // U+f62a +#define ICON_FA_GAVEL "\xef\x83\xa3" // U+f0e3 +#define ICON_FA_GEAR "\xef\x80\x93" // U+f013 +#define ICON_FA_GEARS "\xef\x82\x85" // U+f085 +#define ICON_FA_GEM "\xef\x8e\xa5" // U+f3a5 +#define ICON_FA_GENDERLESS "\xef\x88\xad" // U+f22d +#define ICON_FA_GHOST "\xef\x9b\xa2" // U+f6e2 +#define ICON_FA_GIFT "\xef\x81\xab" // U+f06b +#define ICON_FA_GIFTS "\xef\x9e\x9c" // U+f79c +#define ICON_FA_GLASS_WATER "\xee\x93\xb4" // U+e4f4 +#define ICON_FA_GLASS_WATER_DROPLET "\xee\x93\xb5" // U+e4f5 +#define ICON_FA_GLASSES "\xef\x94\xb0" // U+f530 +#define ICON_FA_GLOBE "\xef\x82\xac" // U+f0ac +#define ICON_FA_GOLF_BALL_TEE "\xef\x91\x90" // U+f450 +#define ICON_FA_GOPURAM "\xef\x99\xa4" // U+f664 +#define ICON_FA_GRADUATION_CAP "\xef\x86\x9d" // U+f19d +#define ICON_FA_GREATER_THAN ">" // U+003e +#define ICON_FA_GREATER_THAN_EQUAL "\xef\x94\xb2" // U+f532 +#define ICON_FA_GRIP "\xef\x96\x8d" // U+f58d +#define ICON_FA_GRIP_LINES "\xef\x9e\xa4" // U+f7a4 +#define ICON_FA_GRIP_LINES_VERTICAL "\xef\x9e\xa5" // U+f7a5 +#define ICON_FA_GRIP_VERTICAL "\xef\x96\x8e" // U+f58e +#define ICON_FA_GROUP_ARROWS_ROTATE "\xee\x93\xb6" // U+e4f6 +#define ICON_FA_GUARANI_SIGN "\xee\x86\x9a" // U+e19a +#define ICON_FA_GUITAR "\xef\x9e\xa6" // U+f7a6 +#define ICON_FA_GUN "\xee\x86\x9b" // U+e19b +#define ICON_FA_H "H" // U+0048 +#define ICON_FA_HAMMER "\xef\x9b\xa3" // U+f6e3 +#define ICON_FA_HAMSA "\xef\x99\xa5" // U+f665 +#define ICON_FA_HAND "\xef\x89\x96" // U+f256 +#define ICON_FA_HAND_BACK_FIST "\xef\x89\x95" // U+f255 +#define ICON_FA_HAND_DOTS "\xef\x91\xa1" // U+f461 +#define ICON_FA_HAND_FIST "\xef\x9b\x9e" // U+f6de +#define ICON_FA_HAND_HOLDING "\xef\x92\xbd" // U+f4bd +#define ICON_FA_HAND_HOLDING_DOLLAR "\xef\x93\x80" // U+f4c0 +#define ICON_FA_HAND_HOLDING_DROPLET "\xef\x93\x81" // U+f4c1 +#define ICON_FA_HAND_HOLDING_HAND "\xee\x93\xb7" // U+e4f7 +#define ICON_FA_HAND_HOLDING_HEART "\xef\x92\xbe" // U+f4be +#define ICON_FA_HAND_HOLDING_MEDICAL "\xee\x81\x9c" // U+e05c +#define ICON_FA_HAND_LIZARD "\xef\x89\x98" // U+f258 +#define ICON_FA_HAND_MIDDLE_FINGER "\xef\xa0\x86" // U+f806 +#define ICON_FA_HAND_PEACE "\xef\x89\x9b" // U+f25b +#define ICON_FA_HAND_POINT_DOWN "\xef\x82\xa7" // U+f0a7 +#define ICON_FA_HAND_POINT_LEFT "\xef\x82\xa5" // U+f0a5 +#define ICON_FA_HAND_POINT_RIGHT "\xef\x82\xa4" // U+f0a4 +#define ICON_FA_HAND_POINT_UP "\xef\x82\xa6" // U+f0a6 +#define ICON_FA_HAND_POINTER "\xef\x89\x9a" // U+f25a +#define ICON_FA_HAND_SCISSORS "\xef\x89\x97" // U+f257 +#define ICON_FA_HAND_SPARKLES "\xee\x81\x9d" // U+e05d +#define ICON_FA_HAND_SPOCK "\xef\x89\x99" // U+f259 +#define ICON_FA_HANDCUFFS "\xee\x93\xb8" // U+e4f8 +#define ICON_FA_HANDS "\xef\x8a\xa7" // U+f2a7 +#define ICON_FA_HANDS_ASL_INTERPRETING "\xef\x8a\xa3" // U+f2a3 +#define ICON_FA_HANDS_BOUND "\xee\x93\xb9" // U+e4f9 +#define ICON_FA_HANDS_BUBBLES "\xee\x81\x9e" // U+e05e +#define ICON_FA_HANDS_CLAPPING "\xee\x86\xa8" // U+e1a8 +#define ICON_FA_HANDS_HOLDING "\xef\x93\x82" // U+f4c2 +#define ICON_FA_HANDS_HOLDING_CHILD "\xee\x93\xba" // U+e4fa +#define ICON_FA_HANDS_HOLDING_CIRCLE "\xee\x93\xbb" // U+e4fb +#define ICON_FA_HANDS_PRAYING "\xef\x9a\x84" // U+f684 +#define ICON_FA_HANDSHAKE "\xef\x8a\xb5" // U+f2b5 +#define ICON_FA_HANDSHAKE_ANGLE "\xef\x93\x84" // U+f4c4 +#define ICON_FA_HANDSHAKE_SIMPLE "\xef\x93\x86" // U+f4c6 +#define ICON_FA_HANDSHAKE_SIMPLE_SLASH "\xee\x81\x9f" // U+e05f +#define ICON_FA_HANDSHAKE_SLASH "\xee\x81\xa0" // U+e060 +#define ICON_FA_HANUKIAH "\xef\x9b\xa6" // U+f6e6 +#define ICON_FA_HARD_DRIVE "\xef\x82\xa0" // U+f0a0 +#define ICON_FA_HASHTAG "#" // U+0023 +#define ICON_FA_HAT_COWBOY "\xef\xa3\x80" // U+f8c0 +#define ICON_FA_HAT_COWBOY_SIDE "\xef\xa3\x81" // U+f8c1 +#define ICON_FA_HAT_WIZARD "\xef\x9b\xa8" // U+f6e8 +#define ICON_FA_HEAD_SIDE_COUGH "\xee\x81\xa1" // U+e061 +#define ICON_FA_HEAD_SIDE_COUGH_SLASH "\xee\x81\xa2" // U+e062 +#define ICON_FA_HEAD_SIDE_MASK "\xee\x81\xa3" // U+e063 +#define ICON_FA_HEAD_SIDE_VIRUS "\xee\x81\xa4" // U+e064 +#define ICON_FA_HEADING "\xef\x87\x9c" // U+f1dc +#define ICON_FA_HEADPHONES "\xef\x80\xa5" // U+f025 +#define ICON_FA_HEADPHONES_SIMPLE "\xef\x96\x8f" // U+f58f +#define ICON_FA_HEADSET "\xef\x96\x90" // U+f590 +#define ICON_FA_HEART "\xef\x80\x84" // U+f004 +#define ICON_FA_HEART_CIRCLE_BOLT "\xee\x93\xbc" // U+e4fc +#define ICON_FA_HEART_CIRCLE_CHECK "\xee\x93\xbd" // U+e4fd +#define ICON_FA_HEART_CIRCLE_EXCLAMATION "\xee\x93\xbe" // U+e4fe +#define ICON_FA_HEART_CIRCLE_MINUS "\xee\x93\xbf" // U+e4ff +#define ICON_FA_HEART_CIRCLE_PLUS "\xee\x94\x80" // U+e500 +#define ICON_FA_HEART_CIRCLE_XMARK "\xee\x94\x81" // U+e501 +#define ICON_FA_HEART_CRACK "\xef\x9e\xa9" // U+f7a9 +#define ICON_FA_HEART_PULSE "\xef\x88\x9e" // U+f21e +#define ICON_FA_HELICOPTER "\xef\x94\xb3" // U+f533 +#define ICON_FA_HELICOPTER_SYMBOL "\xee\x94\x82" // U+e502 +#define ICON_FA_HELMET_SAFETY "\xef\xa0\x87" // U+f807 +#define ICON_FA_HELMET_UN "\xee\x94\x83" // U+e503 +#define ICON_FA_HIGHLIGHTER "\xef\x96\x91" // U+f591 +#define ICON_FA_HILL_AVALANCHE "\xee\x94\x87" // U+e507 +#define ICON_FA_HILL_ROCKSLIDE "\xee\x94\x88" // U+e508 +#define ICON_FA_HIPPO "\xef\x9b\xad" // U+f6ed +#define ICON_FA_HOCKEY_PUCK "\xef\x91\x93" // U+f453 +#define ICON_FA_HOLLY_BERRY "\xef\x9e\xaa" // U+f7aa +#define ICON_FA_HORSE "\xef\x9b\xb0" // U+f6f0 +#define ICON_FA_HORSE_HEAD "\xef\x9e\xab" // U+f7ab +#define ICON_FA_HOSPITAL "\xef\x83\xb8" // U+f0f8 +#define ICON_FA_HOSPITAL_USER "\xef\xa0\x8d" // U+f80d +#define ICON_FA_HOT_TUB_PERSON "\xef\x96\x93" // U+f593 +#define ICON_FA_HOTDOG "\xef\xa0\x8f" // U+f80f +#define ICON_FA_HOTEL "\xef\x96\x94" // U+f594 +#define ICON_FA_HOURGLASS "\xef\x89\x94" // U+f254 +#define ICON_FA_HOURGLASS_EMPTY "\xef\x89\x92" // U+f252 +#define ICON_FA_HOURGLASS_END "\xef\x89\x93" // U+f253 +#define ICON_FA_HOURGLASS_START "\xef\x89\x91" // U+f251 +#define ICON_FA_HOUSE "\xef\x80\x95" // U+f015 +#define ICON_FA_HOUSE_CHIMNEY "\xee\x8e\xaf" // U+e3af +#define ICON_FA_HOUSE_CHIMNEY_CRACK "\xef\x9b\xb1" // U+f6f1 +#define ICON_FA_HOUSE_CHIMNEY_MEDICAL "\xef\x9f\xb2" // U+f7f2 +#define ICON_FA_HOUSE_CHIMNEY_USER "\xee\x81\xa5" // U+e065 +#define ICON_FA_HOUSE_CHIMNEY_WINDOW "\xee\x80\x8d" // U+e00d +#define ICON_FA_HOUSE_CIRCLE_CHECK "\xee\x94\x89" // U+e509 +#define ICON_FA_HOUSE_CIRCLE_EXCLAMATION "\xee\x94\x8a" // U+e50a +#define ICON_FA_HOUSE_CIRCLE_XMARK "\xee\x94\x8b" // U+e50b +#define ICON_FA_HOUSE_CRACK "\xee\x8e\xb1" // U+e3b1 +#define ICON_FA_HOUSE_FIRE "\xee\x94\x8c" // U+e50c +#define ICON_FA_HOUSE_FLAG "\xee\x94\x8d" // U+e50d +#define ICON_FA_HOUSE_FLOOD_WATER "\xee\x94\x8e" // U+e50e +#define ICON_FA_HOUSE_FLOOD_WATER_CIRCLE_ARROW_RIGHT "\xee\x94\x8f" // U+e50f +#define ICON_FA_HOUSE_LAPTOP "\xee\x81\xa6" // U+e066 +#define ICON_FA_HOUSE_LOCK "\xee\x94\x90" // U+e510 +#define ICON_FA_HOUSE_MEDICAL "\xee\x8e\xb2" // U+e3b2 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_CHECK "\xee\x94\x91" // U+e511 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_EXCLAMATION "\xee\x94\x92" // U+e512 +#define ICON_FA_HOUSE_MEDICAL_CIRCLE_XMARK "\xee\x94\x93" // U+e513 +#define ICON_FA_HOUSE_MEDICAL_FLAG "\xee\x94\x94" // U+e514 +#define ICON_FA_HOUSE_SIGNAL "\xee\x80\x92" // U+e012 +#define ICON_FA_HOUSE_TSUNAMI "\xee\x94\x95" // U+e515 +#define ICON_FA_HOUSE_USER "\xee\x86\xb0" // U+e1b0 +#define ICON_FA_HRYVNIA_SIGN "\xef\x9b\xb2" // U+f6f2 +#define ICON_FA_HURRICANE "\xef\x9d\x91" // U+f751 +#define ICON_FA_I "I" // U+0049 +#define ICON_FA_I_CURSOR "\xef\x89\x86" // U+f246 +#define ICON_FA_ICE_CREAM "\xef\xa0\x90" // U+f810 +#define ICON_FA_ICICLES "\xef\x9e\xad" // U+f7ad +#define ICON_FA_ICONS "\xef\xa1\xad" // U+f86d +#define ICON_FA_ID_BADGE "\xef\x8b\x81" // U+f2c1 +#define ICON_FA_ID_CARD "\xef\x8b\x82" // U+f2c2 +#define ICON_FA_ID_CARD_CLIP "\xef\x91\xbf" // U+f47f +#define ICON_FA_IGLOO "\xef\x9e\xae" // U+f7ae +#define ICON_FA_IMAGE "\xef\x80\xbe" // U+f03e +#define ICON_FA_IMAGE_PORTRAIT "\xef\x8f\xa0" // U+f3e0 +#define ICON_FA_IMAGES "\xef\x8c\x82" // U+f302 +#define ICON_FA_INBOX "\xef\x80\x9c" // U+f01c +#define ICON_FA_INDENT "\xef\x80\xbc" // U+f03c +#define ICON_FA_INDIAN_RUPEE_SIGN "\xee\x86\xbc" // U+e1bc +#define ICON_FA_INDUSTRY "\xef\x89\xb5" // U+f275 +#define ICON_FA_INFINITY "\xef\x94\xb4" // U+f534 +#define ICON_FA_INFO "\xef\x84\xa9" // U+f129 +#define ICON_FA_ITALIC "\xef\x80\xb3" // U+f033 +#define ICON_FA_J "J" // U+004a +#define ICON_FA_JAR "\xee\x94\x96" // U+e516 +#define ICON_FA_JAR_WHEAT "\xee\x94\x97" // U+e517 +#define ICON_FA_JEDI "\xef\x99\xa9" // U+f669 +#define ICON_FA_JET_FIGHTER "\xef\x83\xbb" // U+f0fb +#define ICON_FA_JET_FIGHTER_UP "\xee\x94\x98" // U+e518 +#define ICON_FA_JOINT "\xef\x96\x95" // U+f595 +#define ICON_FA_JUG_DETERGENT "\xee\x94\x99" // U+e519 +#define ICON_FA_K "K" // U+004b +#define ICON_FA_KAABA "\xef\x99\xab" // U+f66b +#define ICON_FA_KEY "\xef\x82\x84" // U+f084 +#define ICON_FA_KEYBOARD "\xef\x84\x9c" // U+f11c +#define ICON_FA_KHANDA "\xef\x99\xad" // U+f66d +#define ICON_FA_KIP_SIGN "\xee\x87\x84" // U+e1c4 +#define ICON_FA_KIT_MEDICAL "\xef\x91\xb9" // U+f479 +#define ICON_FA_KITCHEN_SET "\xee\x94\x9a" // U+e51a +#define ICON_FA_KIWI_BIRD "\xef\x94\xb5" // U+f535 +#define ICON_FA_L "L" // U+004c +#define ICON_FA_LAND_MINE_ON "\xee\x94\x9b" // U+e51b +#define ICON_FA_LANDMARK "\xef\x99\xaf" // U+f66f +#define ICON_FA_LANDMARK_DOME "\xef\x9d\x92" // U+f752 +#define ICON_FA_LANDMARK_FLAG "\xee\x94\x9c" // U+e51c +#define ICON_FA_LANGUAGE "\xef\x86\xab" // U+f1ab +#define ICON_FA_LAPTOP "\xef\x84\x89" // U+f109 +#define ICON_FA_LAPTOP_CODE "\xef\x97\xbc" // U+f5fc +#define ICON_FA_LAPTOP_FILE "\xee\x94\x9d" // U+e51d +#define ICON_FA_LAPTOP_MEDICAL "\xef\xa0\x92" // U+f812 +#define ICON_FA_LARI_SIGN "\xee\x87\x88" // U+e1c8 +#define ICON_FA_LAYER_GROUP "\xef\x97\xbd" // U+f5fd +#define ICON_FA_LEAF "\xef\x81\xac" // U+f06c +#define ICON_FA_LEFT_LONG "\xef\x8c\x8a" // U+f30a +#define ICON_FA_LEFT_RIGHT "\xef\x8c\xb7" // U+f337 +#define ICON_FA_LEMON "\xef\x82\x94" // U+f094 +#define ICON_FA_LESS_THAN "<" // U+003c +#define ICON_FA_LESS_THAN_EQUAL "\xef\x94\xb7" // U+f537 +#define ICON_FA_LIFE_RING "\xef\x87\x8d" // U+f1cd +#define ICON_FA_LIGHTBULB "\xef\x83\xab" // U+f0eb +#define ICON_FA_LINES_LEANING "\xee\x94\x9e" // U+e51e +#define ICON_FA_LINK "\xef\x83\x81" // U+f0c1 +#define ICON_FA_LINK_SLASH "\xef\x84\xa7" // U+f127 +#define ICON_FA_LIRA_SIGN "\xef\x86\x95" // U+f195 +#define ICON_FA_LIST "\xef\x80\xba" // U+f03a +#define ICON_FA_LIST_CHECK "\xef\x82\xae" // U+f0ae +#define ICON_FA_LIST_OL "\xef\x83\x8b" // U+f0cb +#define ICON_FA_LIST_UL "\xef\x83\x8a" // U+f0ca +#define ICON_FA_LITECOIN_SIGN "\xee\x87\x93" // U+e1d3 +#define ICON_FA_LOCATION_ARROW "\xef\x84\xa4" // U+f124 +#define ICON_FA_LOCATION_CROSSHAIRS "\xef\x98\x81" // U+f601 +#define ICON_FA_LOCATION_DOT "\xef\x8f\x85" // U+f3c5 +#define ICON_FA_LOCATION_PIN "\xef\x81\x81" // U+f041 +#define ICON_FA_LOCATION_PIN_LOCK "\xee\x94\x9f" // U+e51f +#define ICON_FA_LOCK "\xef\x80\xa3" // U+f023 +#define ICON_FA_LOCK_OPEN "\xef\x8f\x81" // U+f3c1 +#define ICON_FA_LOCUST "\xee\x94\xa0" // U+e520 +#define ICON_FA_LUNGS "\xef\x98\x84" // U+f604 +#define ICON_FA_LUNGS_VIRUS "\xee\x81\xa7" // U+e067 +#define ICON_FA_M "M" // U+004d +#define ICON_FA_MAGNET "\xef\x81\xb6" // U+f076 +#define ICON_FA_MAGNIFYING_GLASS "\xef\x80\x82" // U+f002 +#define ICON_FA_MAGNIFYING_GLASS_ARROW_RIGHT "\xee\x94\xa1" // U+e521 +#define ICON_FA_MAGNIFYING_GLASS_CHART "\xee\x94\xa2" // U+e522 +#define ICON_FA_MAGNIFYING_GLASS_DOLLAR "\xef\x9a\x88" // U+f688 +#define ICON_FA_MAGNIFYING_GLASS_LOCATION "\xef\x9a\x89" // U+f689 +#define ICON_FA_MAGNIFYING_GLASS_MINUS "\xef\x80\x90" // U+f010 +#define ICON_FA_MAGNIFYING_GLASS_PLUS "\xef\x80\x8e" // U+f00e +#define ICON_FA_MANAT_SIGN "\xee\x87\x95" // U+e1d5 +#define ICON_FA_MAP "\xef\x89\xb9" // U+f279 +#define ICON_FA_MAP_LOCATION "\xef\x96\x9f" // U+f59f +#define ICON_FA_MAP_LOCATION_DOT "\xef\x96\xa0" // U+f5a0 +#define ICON_FA_MAP_PIN "\xef\x89\xb6" // U+f276 +#define ICON_FA_MARKER "\xef\x96\xa1" // U+f5a1 +#define ICON_FA_MARS "\xef\x88\xa2" // U+f222 +#define ICON_FA_MARS_AND_VENUS "\xef\x88\xa4" // U+f224 +#define ICON_FA_MARS_AND_VENUS_BURST "\xee\x94\xa3" // U+e523 +#define ICON_FA_MARS_DOUBLE "\xef\x88\xa7" // U+f227 +#define ICON_FA_MARS_STROKE "\xef\x88\xa9" // U+f229 +#define ICON_FA_MARS_STROKE_RIGHT "\xef\x88\xab" // U+f22b +#define ICON_FA_MARS_STROKE_UP "\xef\x88\xaa" // U+f22a +#define ICON_FA_MARTINI_GLASS "\xef\x95\xbb" // U+f57b +#define ICON_FA_MARTINI_GLASS_CITRUS "\xef\x95\xa1" // U+f561 +#define ICON_FA_MARTINI_GLASS_EMPTY "\xef\x80\x80" // U+f000 +#define ICON_FA_MASK "\xef\x9b\xba" // U+f6fa +#define ICON_FA_MASK_FACE "\xee\x87\x97" // U+e1d7 +#define ICON_FA_MASK_VENTILATOR "\xee\x94\xa4" // U+e524 +#define ICON_FA_MASKS_THEATER "\xef\x98\xb0" // U+f630 +#define ICON_FA_MATTRESS_PILLOW "\xee\x94\xa5" // U+e525 +#define ICON_FA_MAXIMIZE "\xef\x8c\x9e" // U+f31e +#define ICON_FA_MEDAL "\xef\x96\xa2" // U+f5a2 +#define ICON_FA_MEMORY "\xef\x94\xb8" // U+f538 +#define ICON_FA_MENORAH "\xef\x99\xb6" // U+f676 +#define ICON_FA_MERCURY "\xef\x88\xa3" // U+f223 +#define ICON_FA_MESSAGE "\xef\x89\xba" // U+f27a +#define ICON_FA_METEOR "\xef\x9d\x93" // U+f753 +#define ICON_FA_MICROCHIP "\xef\x8b\x9b" // U+f2db +#define ICON_FA_MICROPHONE "\xef\x84\xb0" // U+f130 +#define ICON_FA_MICROPHONE_LINES "\xef\x8f\x89" // U+f3c9 +#define ICON_FA_MICROPHONE_LINES_SLASH "\xef\x94\xb9" // U+f539 +#define ICON_FA_MICROPHONE_SLASH "\xef\x84\xb1" // U+f131 +#define ICON_FA_MICROSCOPE "\xef\x98\x90" // U+f610 +#define ICON_FA_MILL_SIGN "\xee\x87\xad" // U+e1ed +#define ICON_FA_MINIMIZE "\xef\x9e\x8c" // U+f78c +#define ICON_FA_MINUS "\xef\x81\xa8" // U+f068 +#define ICON_FA_MITTEN "\xef\x9e\xb5" // U+f7b5 +#define ICON_FA_MOBILE "\xef\x8f\x8e" // U+f3ce +#define ICON_FA_MOBILE_BUTTON "\xef\x84\x8b" // U+f10b +#define ICON_FA_MOBILE_RETRO "\xee\x94\xa7" // U+e527 +#define ICON_FA_MOBILE_SCREEN "\xef\x8f\x8f" // U+f3cf +#define ICON_FA_MOBILE_SCREEN_BUTTON "\xef\x8f\x8d" // U+f3cd +#define ICON_FA_MONEY_BILL "\xef\x83\x96" // U+f0d6 +#define ICON_FA_MONEY_BILL_1 "\xef\x8f\x91" // U+f3d1 +#define ICON_FA_MONEY_BILL_1_WAVE "\xef\x94\xbb" // U+f53b +#define ICON_FA_MONEY_BILL_TRANSFER "\xee\x94\xa8" // U+e528 +#define ICON_FA_MONEY_BILL_TREND_UP "\xee\x94\xa9" // U+e529 +#define ICON_FA_MONEY_BILL_WAVE "\xef\x94\xba" // U+f53a +#define ICON_FA_MONEY_BILL_WHEAT "\xee\x94\xaa" // U+e52a +#define ICON_FA_MONEY_BILLS "\xee\x87\xb3" // U+e1f3 +#define ICON_FA_MONEY_CHECK "\xef\x94\xbc" // U+f53c +#define ICON_FA_MONEY_CHECK_DOLLAR "\xef\x94\xbd" // U+f53d +#define ICON_FA_MONUMENT "\xef\x96\xa6" // U+f5a6 +#define ICON_FA_MOON "\xef\x86\x86" // U+f186 +#define ICON_FA_MORTAR_PESTLE "\xef\x96\xa7" // U+f5a7 +#define ICON_FA_MOSQUE "\xef\x99\xb8" // U+f678 +#define ICON_FA_MOSQUITO "\xee\x94\xab" // U+e52b +#define ICON_FA_MOSQUITO_NET "\xee\x94\xac" // U+e52c +#define ICON_FA_MOTORCYCLE "\xef\x88\x9c" // U+f21c +#define ICON_FA_MOUND "\xee\x94\xad" // U+e52d +#define ICON_FA_MOUNTAIN "\xef\x9b\xbc" // U+f6fc +#define ICON_FA_MOUNTAIN_CITY "\xee\x94\xae" // U+e52e +#define ICON_FA_MOUNTAIN_SUN "\xee\x94\xaf" // U+e52f +#define ICON_FA_MUG_HOT "\xef\x9e\xb6" // U+f7b6 +#define ICON_FA_MUG_SAUCER "\xef\x83\xb4" // U+f0f4 +#define ICON_FA_MUSIC "\xef\x80\x81" // U+f001 +#define ICON_FA_N "N" // U+004e +#define ICON_FA_NAIRA_SIGN "\xee\x87\xb6" // U+e1f6 +#define ICON_FA_NETWORK_WIRED "\xef\x9b\xbf" // U+f6ff +#define ICON_FA_NEUTER "\xef\x88\xac" // U+f22c +#define ICON_FA_NEWSPAPER "\xef\x87\xaa" // U+f1ea +#define ICON_FA_NOT_EQUAL "\xef\x94\xbe" // U+f53e +#define ICON_FA_NOTE_STICKY "\xef\x89\x89" // U+f249 +#define ICON_FA_NOTES_MEDICAL "\xef\x92\x81" // U+f481 +#define ICON_FA_O "O" // U+004f +#define ICON_FA_OBJECT_GROUP "\xef\x89\x87" // U+f247 +#define ICON_FA_OBJECT_UNGROUP "\xef\x89\x88" // U+f248 +#define ICON_FA_OIL_CAN "\xef\x98\x93" // U+f613 +#define ICON_FA_OIL_WELL "\xee\x94\xb2" // U+e532 +#define ICON_FA_OM "\xef\x99\xb9" // U+f679 +#define ICON_FA_OTTER "\xef\x9c\x80" // U+f700 +#define ICON_FA_OUTDENT "\xef\x80\xbb" // U+f03b +#define ICON_FA_P "P" // U+0050 +#define ICON_FA_PAGER "\xef\xa0\x95" // U+f815 +#define ICON_FA_PAINT_ROLLER "\xef\x96\xaa" // U+f5aa +#define ICON_FA_PAINTBRUSH "\xef\x87\xbc" // U+f1fc +#define ICON_FA_PALETTE "\xef\x94\xbf" // U+f53f +#define ICON_FA_PALLET "\xef\x92\x82" // U+f482 +#define ICON_FA_PANORAMA "\xee\x88\x89" // U+e209 +#define ICON_FA_PAPER_PLANE "\xef\x87\x98" // U+f1d8 +#define ICON_FA_PAPERCLIP "\xef\x83\x86" // U+f0c6 +#define ICON_FA_PARACHUTE_BOX "\xef\x93\x8d" // U+f4cd +#define ICON_FA_PARAGRAPH "\xef\x87\x9d" // U+f1dd +#define ICON_FA_PASSPORT "\xef\x96\xab" // U+f5ab +#define ICON_FA_PASTE "\xef\x83\xaa" // U+f0ea +#define ICON_FA_PAUSE "\xef\x81\x8c" // U+f04c +#define ICON_FA_PAW "\xef\x86\xb0" // U+f1b0 +#define ICON_FA_PEACE "\xef\x99\xbc" // U+f67c +#define ICON_FA_PEN "\xef\x8c\x84" // U+f304 +#define ICON_FA_PEN_CLIP "\xef\x8c\x85" // U+f305 +#define ICON_FA_PEN_FANCY "\xef\x96\xac" // U+f5ac +#define ICON_FA_PEN_NIB "\xef\x96\xad" // U+f5ad +#define ICON_FA_PEN_RULER "\xef\x96\xae" // U+f5ae +#define ICON_FA_PEN_TO_SQUARE "\xef\x81\x84" // U+f044 +#define ICON_FA_PENCIL "\xef\x8c\x83" // U+f303 +#define ICON_FA_PEOPLE_ARROWS_LEFT_RIGHT "\xee\x81\xa8" // U+e068 +#define ICON_FA_PEOPLE_CARRY_BOX "\xef\x93\x8e" // U+f4ce +#define ICON_FA_PEOPLE_GROUP "\xee\x94\xb3" // U+e533 +#define ICON_FA_PEOPLE_LINE "\xee\x94\xb4" // U+e534 +#define ICON_FA_PEOPLE_PULLING "\xee\x94\xb5" // U+e535 +#define ICON_FA_PEOPLE_ROBBERY "\xee\x94\xb6" // U+e536 +#define ICON_FA_PEOPLE_ROOF "\xee\x94\xb7" // U+e537 +#define ICON_FA_PEPPER_HOT "\xef\xa0\x96" // U+f816 +#define ICON_FA_PERCENT "%" // U+0025 +#define ICON_FA_PERSON "\xef\x86\x83" // U+f183 +#define ICON_FA_PERSON_ARROW_DOWN_TO_LINE "\xee\x94\xb8" // U+e538 +#define ICON_FA_PERSON_ARROW_UP_FROM_LINE "\xee\x94\xb9" // U+e539 +#define ICON_FA_PERSON_BIKING "\xef\xa1\x8a" // U+f84a +#define ICON_FA_PERSON_BOOTH "\xef\x9d\x96" // U+f756 +#define ICON_FA_PERSON_BREASTFEEDING "\xee\x94\xba" // U+e53a +#define ICON_FA_PERSON_BURST "\xee\x94\xbb" // U+e53b +#define ICON_FA_PERSON_CANE "\xee\x94\xbc" // U+e53c +#define ICON_FA_PERSON_CHALKBOARD "\xee\x94\xbd" // U+e53d +#define ICON_FA_PERSON_CIRCLE_CHECK "\xee\x94\xbe" // U+e53e +#define ICON_FA_PERSON_CIRCLE_EXCLAMATION "\xee\x94\xbf" // U+e53f +#define ICON_FA_PERSON_CIRCLE_MINUS "\xee\x95\x80" // U+e540 +#define ICON_FA_PERSON_CIRCLE_PLUS "\xee\x95\x81" // U+e541 +#define ICON_FA_PERSON_CIRCLE_QUESTION "\xee\x95\x82" // U+e542 +#define ICON_FA_PERSON_CIRCLE_XMARK "\xee\x95\x83" // U+e543 +#define ICON_FA_PERSON_DIGGING "\xef\xa1\x9e" // U+f85e +#define ICON_FA_PERSON_DOTS_FROM_LINE "\xef\x91\xb0" // U+f470 +#define ICON_FA_PERSON_DRESS "\xef\x86\x82" // U+f182 +#define ICON_FA_PERSON_DRESS_BURST "\xee\x95\x84" // U+e544 +#define ICON_FA_PERSON_DROWNING "\xee\x95\x85" // U+e545 +#define ICON_FA_PERSON_FALLING "\xee\x95\x86" // U+e546 +#define ICON_FA_PERSON_FALLING_BURST "\xee\x95\x87" // U+e547 +#define ICON_FA_PERSON_HALF_DRESS "\xee\x95\x88" // U+e548 +#define ICON_FA_PERSON_HARASSING "\xee\x95\x89" // U+e549 +#define ICON_FA_PERSON_HIKING "\xef\x9b\xac" // U+f6ec +#define ICON_FA_PERSON_MILITARY_POINTING "\xee\x95\x8a" // U+e54a +#define ICON_FA_PERSON_MILITARY_RIFLE "\xee\x95\x8b" // U+e54b +#define ICON_FA_PERSON_MILITARY_TO_PERSON "\xee\x95\x8c" // U+e54c +#define ICON_FA_PERSON_PRAYING "\xef\x9a\x83" // U+f683 +#define ICON_FA_PERSON_PREGNANT "\xee\x8c\x9e" // U+e31e +#define ICON_FA_PERSON_RAYS "\xee\x95\x8d" // U+e54d +#define ICON_FA_PERSON_RIFLE "\xee\x95\x8e" // U+e54e +#define ICON_FA_PERSON_RUNNING "\xef\x9c\x8c" // U+f70c +#define ICON_FA_PERSON_SHELTER "\xee\x95\x8f" // U+e54f +#define ICON_FA_PERSON_SKATING "\xef\x9f\x85" // U+f7c5 +#define ICON_FA_PERSON_SKIING "\xef\x9f\x89" // U+f7c9 +#define ICON_FA_PERSON_SKIING_NORDIC "\xef\x9f\x8a" // U+f7ca +#define ICON_FA_PERSON_SNOWBOARDING "\xef\x9f\x8e" // U+f7ce +#define ICON_FA_PERSON_SWIMMING "\xef\x97\x84" // U+f5c4 +#define ICON_FA_PERSON_THROUGH_WINDOW "\xee\x90\xb3" // U+e433 +#define ICON_FA_PERSON_WALKING "\xef\x95\x94" // U+f554 +#define ICON_FA_PERSON_WALKING_ARROW_LOOP_LEFT "\xee\x95\x91" // U+e551 +#define ICON_FA_PERSON_WALKING_ARROW_RIGHT "\xee\x95\x92" // U+e552 +#define ICON_FA_PERSON_WALKING_DASHED_LINE_ARROW_RIGHT "\xee\x95\x93" // U+e553 +#define ICON_FA_PERSON_WALKING_LUGGAGE "\xee\x95\x94" // U+e554 +#define ICON_FA_PERSON_WALKING_WITH_CANE "\xef\x8a\x9d" // U+f29d +#define ICON_FA_PESETA_SIGN "\xee\x88\xa1" // U+e221 +#define ICON_FA_PESO_SIGN "\xee\x88\xa2" // U+e222 +#define ICON_FA_PHONE "\xef\x82\x95" // U+f095 +#define ICON_FA_PHONE_FLIP "\xef\xa1\xb9" // U+f879 +#define ICON_FA_PHONE_SLASH "\xef\x8f\x9d" // U+f3dd +#define ICON_FA_PHONE_VOLUME "\xef\x8a\xa0" // U+f2a0 +#define ICON_FA_PHOTO_FILM "\xef\xa1\xbc" // U+f87c +#define ICON_FA_PIGGY_BANK "\xef\x93\x93" // U+f4d3 +#define ICON_FA_PILLS "\xef\x92\x84" // U+f484 +#define ICON_FA_PIZZA_SLICE "\xef\xa0\x98" // U+f818 +#define ICON_FA_PLACE_OF_WORSHIP "\xef\x99\xbf" // U+f67f +#define ICON_FA_PLANE "\xef\x81\xb2" // U+f072 +#define ICON_FA_PLANE_ARRIVAL "\xef\x96\xaf" // U+f5af +#define ICON_FA_PLANE_CIRCLE_CHECK "\xee\x95\x95" // U+e555 +#define ICON_FA_PLANE_CIRCLE_EXCLAMATION "\xee\x95\x96" // U+e556 +#define ICON_FA_PLANE_CIRCLE_XMARK "\xee\x95\x97" // U+e557 +#define ICON_FA_PLANE_DEPARTURE "\xef\x96\xb0" // U+f5b0 +#define ICON_FA_PLANE_LOCK "\xee\x95\x98" // U+e558 +#define ICON_FA_PLANE_SLASH "\xee\x81\xa9" // U+e069 +#define ICON_FA_PLANE_UP "\xee\x88\xad" // U+e22d +#define ICON_FA_PLANT_WILT "\xee\x90\xbb" // U+e43b +#define ICON_FA_PLATE_WHEAT "\xee\x95\x9a" // U+e55a +#define ICON_FA_PLAY "\xef\x81\x8b" // U+f04b +#define ICON_FA_PLUG "\xef\x87\xa6" // U+f1e6 +#define ICON_FA_PLUG_CIRCLE_BOLT "\xee\x95\x9b" // U+e55b +#define ICON_FA_PLUG_CIRCLE_CHECK "\xee\x95\x9c" // U+e55c +#define ICON_FA_PLUG_CIRCLE_EXCLAMATION "\xee\x95\x9d" // U+e55d +#define ICON_FA_PLUG_CIRCLE_MINUS "\xee\x95\x9e" // U+e55e +#define ICON_FA_PLUG_CIRCLE_PLUS "\xee\x95\x9f" // U+e55f +#define ICON_FA_PLUG_CIRCLE_XMARK "\xee\x95\xa0" // U+e560 +#define ICON_FA_PLUS "+" // U+002b +#define ICON_FA_PLUS_MINUS "\xee\x90\xbc" // U+e43c +#define ICON_FA_PODCAST "\xef\x8b\x8e" // U+f2ce +#define ICON_FA_POO "\xef\x8b\xbe" // U+f2fe +#define ICON_FA_POO_STORM "\xef\x9d\x9a" // U+f75a +#define ICON_FA_POOP "\xef\x98\x99" // U+f619 +#define ICON_FA_POWER_OFF "\xef\x80\x91" // U+f011 +#define ICON_FA_PRESCRIPTION "\xef\x96\xb1" // U+f5b1 +#define ICON_FA_PRESCRIPTION_BOTTLE "\xef\x92\x85" // U+f485 +#define ICON_FA_PRESCRIPTION_BOTTLE_MEDICAL "\xef\x92\x86" // U+f486 +#define ICON_FA_PRINT "\xef\x80\xaf" // U+f02f +#define ICON_FA_PUMP_MEDICAL "\xee\x81\xaa" // U+e06a +#define ICON_FA_PUMP_SOAP "\xee\x81\xab" // U+e06b +#define ICON_FA_PUZZLE_PIECE "\xef\x84\xae" // U+f12e +#define ICON_FA_Q "Q" // U+0051 +#define ICON_FA_QRCODE "\xef\x80\xa9" // U+f029 +#define ICON_FA_QUESTION "?" // U+003f +#define ICON_FA_QUOTE_LEFT "\xef\x84\x8d" // U+f10d +#define ICON_FA_QUOTE_RIGHT "\xef\x84\x8e" // U+f10e +#define ICON_FA_R "R" // U+0052 +#define ICON_FA_RADIATION "\xef\x9e\xb9" // U+f7b9 +#define ICON_FA_RADIO "\xef\xa3\x97" // U+f8d7 +#define ICON_FA_RAINBOW "\xef\x9d\x9b" // U+f75b +#define ICON_FA_RANKING_STAR "\xee\x95\xa1" // U+e561 +#define ICON_FA_RECEIPT "\xef\x95\x83" // U+f543 +#define ICON_FA_RECORD_VINYL "\xef\xa3\x99" // U+f8d9 +#define ICON_FA_RECTANGLE_AD "\xef\x99\x81" // U+f641 +#define ICON_FA_RECTANGLE_LIST "\xef\x80\xa2" // U+f022 +#define ICON_FA_RECTANGLE_XMARK "\xef\x90\x90" // U+f410 +#define ICON_FA_RECYCLE "\xef\x86\xb8" // U+f1b8 +#define ICON_FA_REGISTERED "\xef\x89\x9d" // U+f25d +#define ICON_FA_REPEAT "\xef\x8d\xa3" // U+f363 +#define ICON_FA_REPLY "\xef\x8f\xa5" // U+f3e5 +#define ICON_FA_REPLY_ALL "\xef\x84\xa2" // U+f122 +#define ICON_FA_REPUBLICAN "\xef\x9d\x9e" // U+f75e +#define ICON_FA_RESTROOM "\xef\x9e\xbd" // U+f7bd +#define ICON_FA_RETWEET "\xef\x81\xb9" // U+f079 +#define ICON_FA_RIBBON "\xef\x93\x96" // U+f4d6 +#define ICON_FA_RIGHT_FROM_BRACKET "\xef\x8b\xb5" // U+f2f5 +#define ICON_FA_RIGHT_LEFT "\xef\x8d\xa2" // U+f362 +#define ICON_FA_RIGHT_LONG "\xef\x8c\x8b" // U+f30b +#define ICON_FA_RIGHT_TO_BRACKET "\xef\x8b\xb6" // U+f2f6 +#define ICON_FA_RING "\xef\x9c\x8b" // U+f70b +#define ICON_FA_ROAD "\xef\x80\x98" // U+f018 +#define ICON_FA_ROAD_BARRIER "\xee\x95\xa2" // U+e562 +#define ICON_FA_ROAD_BRIDGE "\xee\x95\xa3" // U+e563 +#define ICON_FA_ROAD_CIRCLE_CHECK "\xee\x95\xa4" // U+e564 +#define ICON_FA_ROAD_CIRCLE_EXCLAMATION "\xee\x95\xa5" // U+e565 +#define ICON_FA_ROAD_CIRCLE_XMARK "\xee\x95\xa6" // U+e566 +#define ICON_FA_ROAD_LOCK "\xee\x95\xa7" // U+e567 +#define ICON_FA_ROAD_SPIKES "\xee\x95\xa8" // U+e568 +#define ICON_FA_ROBOT "\xef\x95\x84" // U+f544 +#define ICON_FA_ROCKET "\xef\x84\xb5" // U+f135 +#define ICON_FA_ROTATE "\xef\x8b\xb1" // U+f2f1 +#define ICON_FA_ROTATE_LEFT "\xef\x8b\xaa" // U+f2ea +#define ICON_FA_ROTATE_RIGHT "\xef\x8b\xb9" // U+f2f9 +#define ICON_FA_ROUTE "\xef\x93\x97" // U+f4d7 +#define ICON_FA_RSS "\xef\x82\x9e" // U+f09e +#define ICON_FA_RUBLE_SIGN "\xef\x85\x98" // U+f158 +#define ICON_FA_RUG "\xee\x95\xa9" // U+e569 +#define ICON_FA_RULER "\xef\x95\x85" // U+f545 +#define ICON_FA_RULER_COMBINED "\xef\x95\x86" // U+f546 +#define ICON_FA_RULER_HORIZONTAL "\xef\x95\x87" // U+f547 +#define ICON_FA_RULER_VERTICAL "\xef\x95\x88" // U+f548 +#define ICON_FA_RUPEE_SIGN "\xef\x85\x96" // U+f156 +#define ICON_FA_RUPIAH_SIGN "\xee\x88\xbd" // U+e23d +#define ICON_FA_S "S" // U+0053 +#define ICON_FA_SACK_DOLLAR "\xef\xa0\x9d" // U+f81d +#define ICON_FA_SACK_XMARK "\xee\x95\xaa" // U+e56a +#define ICON_FA_SAILBOAT "\xee\x91\x85" // U+e445 +#define ICON_FA_SATELLITE "\xef\x9e\xbf" // U+f7bf +#define ICON_FA_SATELLITE_DISH "\xef\x9f\x80" // U+f7c0 +#define ICON_FA_SCALE_BALANCED "\xef\x89\x8e" // U+f24e +#define ICON_FA_SCALE_UNBALANCED "\xef\x94\x95" // U+f515 +#define ICON_FA_SCALE_UNBALANCED_FLIP "\xef\x94\x96" // U+f516 +#define ICON_FA_SCHOOL "\xef\x95\x89" // U+f549 +#define ICON_FA_SCHOOL_CIRCLE_CHECK "\xee\x95\xab" // U+e56b +#define ICON_FA_SCHOOL_CIRCLE_EXCLAMATION "\xee\x95\xac" // U+e56c +#define ICON_FA_SCHOOL_CIRCLE_XMARK "\xee\x95\xad" // U+e56d +#define ICON_FA_SCHOOL_FLAG "\xee\x95\xae" // U+e56e +#define ICON_FA_SCHOOL_LOCK "\xee\x95\xaf" // U+e56f +#define ICON_FA_SCISSORS "\xef\x83\x84" // U+f0c4 +#define ICON_FA_SCREWDRIVER "\xef\x95\x8a" // U+f54a +#define ICON_FA_SCREWDRIVER_WRENCH "\xef\x9f\x99" // U+f7d9 +#define ICON_FA_SCROLL "\xef\x9c\x8e" // U+f70e +#define ICON_FA_SCROLL_TORAH "\xef\x9a\xa0" // U+f6a0 +#define ICON_FA_SD_CARD "\xef\x9f\x82" // U+f7c2 +#define ICON_FA_SECTION "\xee\x91\x87" // U+e447 +#define ICON_FA_SEEDLING "\xef\x93\x98" // U+f4d8 +#define ICON_FA_SERVER "\xef\x88\xb3" // U+f233 +#define ICON_FA_SHAPES "\xef\x98\x9f" // U+f61f +#define ICON_FA_SHARE "\xef\x81\xa4" // U+f064 +#define ICON_FA_SHARE_FROM_SQUARE "\xef\x85\x8d" // U+f14d +#define ICON_FA_SHARE_NODES "\xef\x87\xa0" // U+f1e0 +#define ICON_FA_SHEET_PLASTIC "\xee\x95\xb1" // U+e571 +#define ICON_FA_SHEKEL_SIGN "\xef\x88\x8b" // U+f20b +#define ICON_FA_SHIELD "\xef\x84\xb2" // U+f132 +#define ICON_FA_SHIELD_CAT "\xee\x95\xb2" // U+e572 +#define ICON_FA_SHIELD_DOG "\xee\x95\xb3" // U+e573 +#define ICON_FA_SHIELD_HALVED "\xef\x8f\xad" // U+f3ed +#define ICON_FA_SHIELD_HEART "\xee\x95\xb4" // U+e574 +#define ICON_FA_SHIELD_VIRUS "\xee\x81\xac" // U+e06c +#define ICON_FA_SHIP "\xef\x88\x9a" // U+f21a +#define ICON_FA_SHIRT "\xef\x95\x93" // U+f553 +#define ICON_FA_SHOE_PRINTS "\xef\x95\x8b" // U+f54b +#define ICON_FA_SHOP "\xef\x95\x8f" // U+f54f +#define ICON_FA_SHOP_LOCK "\xee\x92\xa5" // U+e4a5 +#define ICON_FA_SHOP_SLASH "\xee\x81\xb0" // U+e070 +#define ICON_FA_SHOWER "\xef\x8b\x8c" // U+f2cc +#define ICON_FA_SHRIMP "\xee\x91\x88" // U+e448 +#define ICON_FA_SHUFFLE "\xef\x81\xb4" // U+f074 +#define ICON_FA_SHUTTLE_SPACE "\xef\x86\x97" // U+f197 +#define ICON_FA_SIGN_HANGING "\xef\x93\x99" // U+f4d9 +#define ICON_FA_SIGNAL "\xef\x80\x92" // U+f012 +#define ICON_FA_SIGNATURE "\xef\x96\xb7" // U+f5b7 +#define ICON_FA_SIGNS_POST "\xef\x89\xb7" // U+f277 +#define ICON_FA_SIM_CARD "\xef\x9f\x84" // U+f7c4 +#define ICON_FA_SINK "\xee\x81\xad" // U+e06d +#define ICON_FA_SITEMAP "\xef\x83\xa8" // U+f0e8 +#define ICON_FA_SKULL "\xef\x95\x8c" // U+f54c +#define ICON_FA_SKULL_CROSSBONES "\xef\x9c\x94" // U+f714 +#define ICON_FA_SLASH "\xef\x9c\x95" // U+f715 +#define ICON_FA_SLEIGH "\xef\x9f\x8c" // U+f7cc +#define ICON_FA_SLIDERS "\xef\x87\x9e" // U+f1de +#define ICON_FA_SMOG "\xef\x9d\x9f" // U+f75f +#define ICON_FA_SMOKING "\xef\x92\x8d" // U+f48d +#define ICON_FA_SNOWFLAKE "\xef\x8b\x9c" // U+f2dc +#define ICON_FA_SNOWMAN "\xef\x9f\x90" // U+f7d0 +#define ICON_FA_SNOWPLOW "\xef\x9f\x92" // U+f7d2 +#define ICON_FA_SOAP "\xee\x81\xae" // U+e06e +#define ICON_FA_SOCKS "\xef\x9a\x96" // U+f696 +#define ICON_FA_SOLAR_PANEL "\xef\x96\xba" // U+f5ba +#define ICON_FA_SORT "\xef\x83\x9c" // U+f0dc +#define ICON_FA_SORT_DOWN "\xef\x83\x9d" // U+f0dd +#define ICON_FA_SORT_UP "\xef\x83\x9e" // U+f0de +#define ICON_FA_SPA "\xef\x96\xbb" // U+f5bb +#define ICON_FA_SPAGHETTI_MONSTER_FLYING "\xef\x99\xbb" // U+f67b +#define ICON_FA_SPELL_CHECK "\xef\xa2\x91" // U+f891 +#define ICON_FA_SPIDER "\xef\x9c\x97" // U+f717 +#define ICON_FA_SPINNER "\xef\x84\x90" // U+f110 +#define ICON_FA_SPLOTCH "\xef\x96\xbc" // U+f5bc +#define ICON_FA_SPOON "\xef\x8b\xa5" // U+f2e5 +#define ICON_FA_SPRAY_CAN "\xef\x96\xbd" // U+f5bd +#define ICON_FA_SPRAY_CAN_SPARKLES "\xef\x97\x90" // U+f5d0 +#define ICON_FA_SQUARE "\xef\x83\x88" // U+f0c8 +#define ICON_FA_SQUARE_ARROW_UP_RIGHT "\xef\x85\x8c" // U+f14c +#define ICON_FA_SQUARE_CARET_DOWN "\xef\x85\x90" // U+f150 +#define ICON_FA_SQUARE_CARET_LEFT "\xef\x86\x91" // U+f191 +#define ICON_FA_SQUARE_CARET_RIGHT "\xef\x85\x92" // U+f152 +#define ICON_FA_SQUARE_CARET_UP "\xef\x85\x91" // U+f151 +#define ICON_FA_SQUARE_CHECK "\xef\x85\x8a" // U+f14a +#define ICON_FA_SQUARE_ENVELOPE "\xef\x86\x99" // U+f199 +#define ICON_FA_SQUARE_FULL "\xef\x91\x9c" // U+f45c +#define ICON_FA_SQUARE_H "\xef\x83\xbd" // U+f0fd +#define ICON_FA_SQUARE_MINUS "\xef\x85\x86" // U+f146 +#define ICON_FA_SQUARE_NFI "\xee\x95\xb6" // U+e576 +#define ICON_FA_SQUARE_PARKING "\xef\x95\x80" // U+f540 +#define ICON_FA_SQUARE_PEN "\xef\x85\x8b" // U+f14b +#define ICON_FA_SQUARE_PERSON_CONFINED "\xee\x95\xb7" // U+e577 +#define ICON_FA_SQUARE_PHONE "\xef\x82\x98" // U+f098 +#define ICON_FA_SQUARE_PHONE_FLIP "\xef\xa1\xbb" // U+f87b +#define ICON_FA_SQUARE_PLUS "\xef\x83\xbe" // U+f0fe +#define ICON_FA_SQUARE_POLL_HORIZONTAL "\xef\x9a\x82" // U+f682 +#define ICON_FA_SQUARE_POLL_VERTICAL "\xef\x9a\x81" // U+f681 +#define ICON_FA_SQUARE_ROOT_VARIABLE "\xef\x9a\x98" // U+f698 +#define ICON_FA_SQUARE_RSS "\xef\x85\x83" // U+f143 +#define ICON_FA_SQUARE_SHARE_NODES "\xef\x87\xa1" // U+f1e1 +#define ICON_FA_SQUARE_UP_RIGHT "\xef\x8d\xa0" // U+f360 +#define ICON_FA_SQUARE_VIRUS "\xee\x95\xb8" // U+e578 +#define ICON_FA_SQUARE_XMARK "\xef\x8b\x93" // U+f2d3 +#define ICON_FA_STAFF_AESCULAPIUS "\xee\x95\xb9" // U+e579 +#define ICON_FA_STAIRS "\xee\x8a\x89" // U+e289 +#define ICON_FA_STAMP "\xef\x96\xbf" // U+f5bf +#define ICON_FA_STAR "\xef\x80\x85" // U+f005 +#define ICON_FA_STAR_AND_CRESCENT "\xef\x9a\x99" // U+f699 +#define ICON_FA_STAR_HALF "\xef\x82\x89" // U+f089 +#define ICON_FA_STAR_HALF_STROKE "\xef\x97\x80" // U+f5c0 +#define ICON_FA_STAR_OF_DAVID "\xef\x9a\x9a" // U+f69a +#define ICON_FA_STAR_OF_LIFE "\xef\x98\xa1" // U+f621 +#define ICON_FA_STERLING_SIGN "\xef\x85\x94" // U+f154 +#define ICON_FA_STETHOSCOPE "\xef\x83\xb1" // U+f0f1 +#define ICON_FA_STOP "\xef\x81\x8d" // U+f04d +#define ICON_FA_STOPWATCH "\xef\x8b\xb2" // U+f2f2 +#define ICON_FA_STOPWATCH_20 "\xee\x81\xaf" // U+e06f +#define ICON_FA_STORE "\xef\x95\x8e" // U+f54e +#define ICON_FA_STORE_SLASH "\xee\x81\xb1" // U+e071 +#define ICON_FA_STREET_VIEW "\xef\x88\x9d" // U+f21d +#define ICON_FA_STRIKETHROUGH "\xef\x83\x8c" // U+f0cc +#define ICON_FA_STROOPWAFEL "\xef\x95\x91" // U+f551 +#define ICON_FA_SUBSCRIPT "\xef\x84\xac" // U+f12c +#define ICON_FA_SUITCASE "\xef\x83\xb2" // U+f0f2 +#define ICON_FA_SUITCASE_MEDICAL "\xef\x83\xba" // U+f0fa +#define ICON_FA_SUITCASE_ROLLING "\xef\x97\x81" // U+f5c1 +#define ICON_FA_SUN "\xef\x86\x85" // U+f185 +#define ICON_FA_SUN_PLANT_WILT "\xee\x95\xba" // U+e57a +#define ICON_FA_SUPERSCRIPT "\xef\x84\xab" // U+f12b +#define ICON_FA_SWATCHBOOK "\xef\x97\x83" // U+f5c3 +#define ICON_FA_SYNAGOGUE "\xef\x9a\x9b" // U+f69b +#define ICON_FA_SYRINGE "\xef\x92\x8e" // U+f48e +#define ICON_FA_T "T" // U+0054 +#define ICON_FA_TABLE "\xef\x83\x8e" // U+f0ce +#define ICON_FA_TABLE_CELLS "\xef\x80\x8a" // U+f00a +#define ICON_FA_TABLE_CELLS_LARGE "\xef\x80\x89" // U+f009 +#define ICON_FA_TABLE_COLUMNS "\xef\x83\x9b" // U+f0db +#define ICON_FA_TABLE_LIST "\xef\x80\x8b" // U+f00b +#define ICON_FA_TABLE_TENNIS_PADDLE_BALL "\xef\x91\x9d" // U+f45d +#define ICON_FA_TABLET "\xef\x8f\xbb" // U+f3fb +#define ICON_FA_TABLET_BUTTON "\xef\x84\x8a" // U+f10a +#define ICON_FA_TABLET_SCREEN_BUTTON "\xef\x8f\xba" // U+f3fa +#define ICON_FA_TABLETS "\xef\x92\x90" // U+f490 +#define ICON_FA_TACHOGRAPH_DIGITAL "\xef\x95\xa6" // U+f566 +#define ICON_FA_TAG "\xef\x80\xab" // U+f02b +#define ICON_FA_TAGS "\xef\x80\xac" // U+f02c +#define ICON_FA_TAPE "\xef\x93\x9b" // U+f4db +#define ICON_FA_TARP "\xee\x95\xbb" // U+e57b +#define ICON_FA_TARP_DROPLET "\xee\x95\xbc" // U+e57c +#define ICON_FA_TAXI "\xef\x86\xba" // U+f1ba +#define ICON_FA_TEETH "\xef\x98\xae" // U+f62e +#define ICON_FA_TEETH_OPEN "\xef\x98\xaf" // U+f62f +#define ICON_FA_TEMPERATURE_ARROW_DOWN "\xee\x80\xbf" // U+e03f +#define ICON_FA_TEMPERATURE_ARROW_UP "\xee\x81\x80" // U+e040 +#define ICON_FA_TEMPERATURE_EMPTY "\xef\x8b\x8b" // U+f2cb +#define ICON_FA_TEMPERATURE_FULL "\xef\x8b\x87" // U+f2c7 +#define ICON_FA_TEMPERATURE_HALF "\xef\x8b\x89" // U+f2c9 +#define ICON_FA_TEMPERATURE_HIGH "\xef\x9d\xa9" // U+f769 +#define ICON_FA_TEMPERATURE_LOW "\xef\x9d\xab" // U+f76b +#define ICON_FA_TEMPERATURE_QUARTER "\xef\x8b\x8a" // U+f2ca +#define ICON_FA_TEMPERATURE_THREE_QUARTERS "\xef\x8b\x88" // U+f2c8 +#define ICON_FA_TENGE_SIGN "\xef\x9f\x97" // U+f7d7 +#define ICON_FA_TENT "\xee\x95\xbd" // U+e57d +#define ICON_FA_TENT_ARROW_DOWN_TO_LINE "\xee\x95\xbe" // U+e57e +#define ICON_FA_TENT_ARROW_LEFT_RIGHT "\xee\x95\xbf" // U+e57f +#define ICON_FA_TENT_ARROW_TURN_LEFT "\xee\x96\x80" // U+e580 +#define ICON_FA_TENT_ARROWS_DOWN "\xee\x96\x81" // U+e581 +#define ICON_FA_TENTS "\xee\x96\x82" // U+e582 +#define ICON_FA_TERMINAL "\xef\x84\xa0" // U+f120 +#define ICON_FA_TEXT_HEIGHT "\xef\x80\xb4" // U+f034 +#define ICON_FA_TEXT_SLASH "\xef\xa1\xbd" // U+f87d +#define ICON_FA_TEXT_WIDTH "\xef\x80\xb5" // U+f035 +#define ICON_FA_THERMOMETER "\xef\x92\x91" // U+f491 +#define ICON_FA_THUMBS_DOWN "\xef\x85\xa5" // U+f165 +#define ICON_FA_THUMBS_UP "\xef\x85\xa4" // U+f164 +#define ICON_FA_THUMBTACK "\xef\x82\x8d" // U+f08d +#define ICON_FA_TICKET "\xef\x85\x85" // U+f145 +#define ICON_FA_TICKET_SIMPLE "\xef\x8f\xbf" // U+f3ff +#define ICON_FA_TIMELINE "\xee\x8a\x9c" // U+e29c +#define ICON_FA_TOGGLE_OFF "\xef\x88\x84" // U+f204 +#define ICON_FA_TOGGLE_ON "\xef\x88\x85" // U+f205 +#define ICON_FA_TOILET "\xef\x9f\x98" // U+f7d8 +#define ICON_FA_TOILET_PAPER "\xef\x9c\x9e" // U+f71e +#define ICON_FA_TOILET_PAPER_SLASH "\xee\x81\xb2" // U+e072 +#define ICON_FA_TOILET_PORTABLE "\xee\x96\x83" // U+e583 +#define ICON_FA_TOILETS_PORTABLE "\xee\x96\x84" // U+e584 +#define ICON_FA_TOOLBOX "\xef\x95\x92" // U+f552 +#define ICON_FA_TOOTH "\xef\x97\x89" // U+f5c9 +#define ICON_FA_TORII_GATE "\xef\x9a\xa1" // U+f6a1 +#define ICON_FA_TORNADO "\xef\x9d\xaf" // U+f76f +#define ICON_FA_TOWER_BROADCAST "\xef\x94\x99" // U+f519 +#define ICON_FA_TOWER_CELL "\xee\x96\x85" // U+e585 +#define ICON_FA_TOWER_OBSERVATION "\xee\x96\x86" // U+e586 +#define ICON_FA_TRACTOR "\xef\x9c\xa2" // U+f722 +#define ICON_FA_TRADEMARK "\xef\x89\x9c" // U+f25c +#define ICON_FA_TRAFFIC_LIGHT "\xef\x98\xb7" // U+f637 +#define ICON_FA_TRAILER "\xee\x81\x81" // U+e041 +#define ICON_FA_TRAIN "\xef\x88\xb8" // U+f238 +#define ICON_FA_TRAIN_SUBWAY "\xef\x88\xb9" // U+f239 +#define ICON_FA_TRAIN_TRAM "\xef\x9f\x9a" // U+f7da +#define ICON_FA_TRANSGENDER "\xef\x88\xa5" // U+f225 +#define ICON_FA_TRASH "\xef\x87\xb8" // U+f1f8 +#define ICON_FA_TRASH_ARROW_UP "\xef\xa0\xa9" // U+f829 +#define ICON_FA_TRASH_CAN "\xef\x8b\xad" // U+f2ed +#define ICON_FA_TRASH_CAN_ARROW_UP "\xef\xa0\xaa" // U+f82a +#define ICON_FA_TREE "\xef\x86\xbb" // U+f1bb +#define ICON_FA_TREE_CITY "\xee\x96\x87" // U+e587 +#define ICON_FA_TRIANGLE_EXCLAMATION "\xef\x81\xb1" // U+f071 +#define ICON_FA_TROPHY "\xef\x82\x91" // U+f091 +#define ICON_FA_TROWEL "\xee\x96\x89" // U+e589 +#define ICON_FA_TROWEL_BRICKS "\xee\x96\x8a" // U+e58a +#define ICON_FA_TRUCK "\xef\x83\x91" // U+f0d1 +#define ICON_FA_TRUCK_ARROW_RIGHT "\xee\x96\x8b" // U+e58b +#define ICON_FA_TRUCK_DROPLET "\xee\x96\x8c" // U+e58c +#define ICON_FA_TRUCK_FAST "\xef\x92\x8b" // U+f48b +#define ICON_FA_TRUCK_FIELD "\xee\x96\x8d" // U+e58d +#define ICON_FA_TRUCK_FIELD_UN "\xee\x96\x8e" // U+e58e +#define ICON_FA_TRUCK_FRONT "\xee\x8a\xb7" // U+e2b7 +#define ICON_FA_TRUCK_MEDICAL "\xef\x83\xb9" // U+f0f9 +#define ICON_FA_TRUCK_MONSTER "\xef\x98\xbb" // U+f63b +#define ICON_FA_TRUCK_MOVING "\xef\x93\x9f" // U+f4df +#define ICON_FA_TRUCK_PICKUP "\xef\x98\xbc" // U+f63c +#define ICON_FA_TRUCK_PLANE "\xee\x96\x8f" // U+e58f +#define ICON_FA_TRUCK_RAMP_BOX "\xef\x93\x9e" // U+f4de +#define ICON_FA_TTY "\xef\x87\xa4" // U+f1e4 +#define ICON_FA_TURKISH_LIRA_SIGN "\xee\x8a\xbb" // U+e2bb +#define ICON_FA_TURN_DOWN "\xef\x8e\xbe" // U+f3be +#define ICON_FA_TURN_UP "\xef\x8e\xbf" // U+f3bf +#define ICON_FA_TV "\xef\x89\xac" // U+f26c +#define ICON_FA_U "U" // U+0055 +#define ICON_FA_UMBRELLA "\xef\x83\xa9" // U+f0e9 +#define ICON_FA_UMBRELLA_BEACH "\xef\x97\x8a" // U+f5ca +#define ICON_FA_UNDERLINE "\xef\x83\x8d" // U+f0cd +#define ICON_FA_UNIVERSAL_ACCESS "\xef\x8a\x9a" // U+f29a +#define ICON_FA_UNLOCK "\xef\x82\x9c" // U+f09c +#define ICON_FA_UNLOCK_KEYHOLE "\xef\x84\xbe" // U+f13e +#define ICON_FA_UP_DOWN "\xef\x8c\xb8" // U+f338 +#define ICON_FA_UP_DOWN_LEFT_RIGHT "\xef\x82\xb2" // U+f0b2 +#define ICON_FA_UP_LONG "\xef\x8c\x8c" // U+f30c +#define ICON_FA_UP_RIGHT_AND_DOWN_LEFT_FROM_CENTER "\xef\x90\xa4" // U+f424 +#define ICON_FA_UP_RIGHT_FROM_SQUARE "\xef\x8d\x9d" // U+f35d +#define ICON_FA_UPLOAD "\xef\x82\x93" // U+f093 +#define ICON_FA_USER "\xef\x80\x87" // U+f007 +#define ICON_FA_USER_ASTRONAUT "\xef\x93\xbb" // U+f4fb +#define ICON_FA_USER_CHECK "\xef\x93\xbc" // U+f4fc +#define ICON_FA_USER_CLOCK "\xef\x93\xbd" // U+f4fd +#define ICON_FA_USER_DOCTOR "\xef\x83\xb0" // U+f0f0 +#define ICON_FA_USER_GEAR "\xef\x93\xbe" // U+f4fe +#define ICON_FA_USER_GRADUATE "\xef\x94\x81" // U+f501 +#define ICON_FA_USER_GROUP "\xef\x94\x80" // U+f500 +#define ICON_FA_USER_INJURED "\xef\x9c\xa8" // U+f728 +#define ICON_FA_USER_LARGE "\xef\x90\x86" // U+f406 +#define ICON_FA_USER_LARGE_SLASH "\xef\x93\xba" // U+f4fa +#define ICON_FA_USER_LOCK "\xef\x94\x82" // U+f502 +#define ICON_FA_USER_MINUS "\xef\x94\x83" // U+f503 +#define ICON_FA_USER_NINJA "\xef\x94\x84" // U+f504 +#define ICON_FA_USER_NURSE "\xef\xa0\xaf" // U+f82f +#define ICON_FA_USER_PEN "\xef\x93\xbf" // U+f4ff +#define ICON_FA_USER_PLUS "\xef\x88\xb4" // U+f234 +#define ICON_FA_USER_SECRET "\xef\x88\x9b" // U+f21b +#define ICON_FA_USER_SHIELD "\xef\x94\x85" // U+f505 +#define ICON_FA_USER_SLASH "\xef\x94\x86" // U+f506 +#define ICON_FA_USER_TAG "\xef\x94\x87" // U+f507 +#define ICON_FA_USER_TIE "\xef\x94\x88" // U+f508 +#define ICON_FA_USER_XMARK "\xef\x88\xb5" // U+f235 +#define ICON_FA_USERS "\xef\x83\x80" // U+f0c0 +#define ICON_FA_USERS_BETWEEN_LINES "\xee\x96\x91" // U+e591 +#define ICON_FA_USERS_GEAR "\xef\x94\x89" // U+f509 +#define ICON_FA_USERS_LINE "\xee\x96\x92" // U+e592 +#define ICON_FA_USERS_RAYS "\xee\x96\x93" // U+e593 +#define ICON_FA_USERS_RECTANGLE "\xee\x96\x94" // U+e594 +#define ICON_FA_USERS_SLASH "\xee\x81\xb3" // U+e073 +#define ICON_FA_USERS_VIEWFINDER "\xee\x96\x95" // U+e595 +#define ICON_FA_UTENSILS "\xef\x8b\xa7" // U+f2e7 +#define ICON_FA_V "V" // U+0056 +#define ICON_FA_VAN_SHUTTLE "\xef\x96\xb6" // U+f5b6 +#define ICON_FA_VAULT "\xee\x8b\x85" // U+e2c5 +#define ICON_FA_VECTOR_SQUARE "\xef\x97\x8b" // U+f5cb +#define ICON_FA_VENUS "\xef\x88\xa1" // U+f221 +#define ICON_FA_VENUS_DOUBLE "\xef\x88\xa6" // U+f226 +#define ICON_FA_VENUS_MARS "\xef\x88\xa8" // U+f228 +#define ICON_FA_VEST "\xee\x82\x85" // U+e085 +#define ICON_FA_VEST_PATCHES "\xee\x82\x86" // U+e086 +#define ICON_FA_VIAL "\xef\x92\x92" // U+f492 +#define ICON_FA_VIAL_CIRCLE_CHECK "\xee\x96\x96" // U+e596 +#define ICON_FA_VIAL_VIRUS "\xee\x96\x97" // U+e597 +#define ICON_FA_VIALS "\xef\x92\x93" // U+f493 +#define ICON_FA_VIDEO "\xef\x80\xbd" // U+f03d +#define ICON_FA_VIDEO_SLASH "\xef\x93\xa2" // U+f4e2 +#define ICON_FA_VIHARA "\xef\x9a\xa7" // U+f6a7 +#define ICON_FA_VIRUS "\xee\x81\xb4" // U+e074 +#define ICON_FA_VIRUS_COVID "\xee\x92\xa8" // U+e4a8 +#define ICON_FA_VIRUS_COVID_SLASH "\xee\x92\xa9" // U+e4a9 +#define ICON_FA_VIRUS_SLASH "\xee\x81\xb5" // U+e075 +#define ICON_FA_VIRUSES "\xee\x81\xb6" // U+e076 +#define ICON_FA_VOICEMAIL "\xef\xa2\x97" // U+f897 +#define ICON_FA_VOLCANO "\xef\x9d\xb0" // U+f770 +#define ICON_FA_VOLLEYBALL "\xef\x91\x9f" // U+f45f +#define ICON_FA_VOLUME_HIGH "\xef\x80\xa8" // U+f028 +#define ICON_FA_VOLUME_LOW "\xef\x80\xa7" // U+f027 +#define ICON_FA_VOLUME_OFF "\xef\x80\xa6" // U+f026 +#define ICON_FA_VOLUME_XMARK "\xef\x9a\xa9" // U+f6a9 +#define ICON_FA_VR_CARDBOARD "\xef\x9c\xa9" // U+f729 +#define ICON_FA_W "W" // U+0057 +#define ICON_FA_WALKIE_TALKIE "\xef\xa3\xaf" // U+f8ef +#define ICON_FA_WALLET "\xef\x95\x95" // U+f555 +#define ICON_FA_WAND_MAGIC "\xef\x83\x90" // U+f0d0 +#define ICON_FA_WAND_MAGIC_SPARKLES "\xee\x8b\x8a" // U+e2ca +#define ICON_FA_WAND_SPARKLES "\xef\x9c\xab" // U+f72b +#define ICON_FA_WAREHOUSE "\xef\x92\x94" // U+f494 +#define ICON_FA_WATER "\xef\x9d\xb3" // U+f773 +#define ICON_FA_WATER_LADDER "\xef\x97\x85" // U+f5c5 +#define ICON_FA_WAVE_SQUARE "\xef\xa0\xbe" // U+f83e +#define ICON_FA_WEIGHT_HANGING "\xef\x97\x8d" // U+f5cd +#define ICON_FA_WEIGHT_SCALE "\xef\x92\x96" // U+f496 +#define ICON_FA_WHEAT_AWN "\xee\x8b\x8d" // U+e2cd +#define ICON_FA_WHEAT_AWN_CIRCLE_EXCLAMATION "\xee\x96\x98" // U+e598 +#define ICON_FA_WHEELCHAIR "\xef\x86\x93" // U+f193 +#define ICON_FA_WHEELCHAIR_MOVE "\xee\x8b\x8e" // U+e2ce +#define ICON_FA_WHISKEY_GLASS "\xef\x9e\xa0" // U+f7a0 +#define ICON_FA_WIFI "\xef\x87\xab" // U+f1eb +#define ICON_FA_WIND "\xef\x9c\xae" // U+f72e +#define ICON_FA_WINDOW_MAXIMIZE "\xef\x8b\x90" // U+f2d0 +#define ICON_FA_WINDOW_MINIMIZE "\xef\x8b\x91" // U+f2d1 +#define ICON_FA_WINDOW_RESTORE "\xef\x8b\x92" // U+f2d2 +#define ICON_FA_WINE_BOTTLE "\xef\x9c\xaf" // U+f72f +#define ICON_FA_WINE_GLASS "\xef\x93\xa3" // U+f4e3 +#define ICON_FA_WINE_GLASS_EMPTY "\xef\x97\x8e" // U+f5ce +#define ICON_FA_WON_SIGN "\xef\x85\x99" // U+f159 +#define ICON_FA_WORM "\xee\x96\x99" // U+e599 +#define ICON_FA_WRENCH "\xef\x82\xad" // U+f0ad +#define ICON_FA_X "X" // U+0058 +#define ICON_FA_X_RAY "\xef\x92\x97" // U+f497 +#define ICON_FA_XMARK "\xef\x80\x8d" // U+f00d +#define ICON_FA_XMARKS_LINES "\xee\x96\x9a" // U+e59a +#define ICON_FA_Y "Y" // U+0059 +#define ICON_FA_YEN_SIGN "\xef\x85\x97" // U+f157 +#define ICON_FA_YIN_YANG "\xef\x9a\xad" // U+f6ad +#define ICON_FA_Z "Z" // U+005a diff --git a/Editor/LayerWindow.cpp b/Editor/LayerWindow.cpp index ab30cd44f..777cfae9b 100644 --- a/Editor/LayerWindow.cpp +++ b/Editor/LayerWindow.cpp @@ -9,18 +9,33 @@ using namespace wi::scene; void LayerWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Layer Window"); - SetSize(XMFLOAT2(420, 290)); + wi::gui::Window::Create(ICON_LAYER " Layer", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 350)); + + closeButton.SetTooltip("Delete LayerComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().layers.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 30; float y = 0; float step = 25; float siz = 20; + float wid = 250; label.Create("LayerWindowLabel"); label.SetText("The layer is a 32-bit mask (uint32_t), which can be used for filtering by multiple systems (visibility, collision, picking, etc.).\n- If all bits are disabled, it means the layer will be inactive in most systems.\n- For ray tracing, the lower 8 bits will be used as instance inclusion mask."); label.SetPos(XMFLOAT2(x, y)); - label.SetSize(XMFLOAT2(370, 120)); + label.SetSize(XMFLOAT2(wid, 100)); label.SetColor(wi::Color::Transparent()); AddWidget(&label); y += label.GetScale().y + 5; @@ -29,7 +44,7 @@ void LayerWindow::Create(EditorComponent* _editor) { layers[i].Create(""); layers[i].SetText(std::to_string(i) + ": "); - layers[i].SetPos(XMFLOAT2(x + (i % 8) * 50, y + (i / 8) * step)); + layers[i].SetPos(XMFLOAT2(x + 20 + (i % 5) * 50, y + (i / 5) * step)); layers[i].OnClick([=](wi::gui::EventArgs args) { LayerComponent* layer = editor->GetCurrentScene().layers.GetComponent(entity); @@ -51,7 +66,7 @@ void LayerWindow::Create(EditorComponent* _editor) AddWidget(&layers[i]); } - y += step * 4; + y += step * 7; enableAllButton.Create("Enable ALL"); enableAllButton.SetPos(XMFLOAT2(x, y)); @@ -81,7 +96,7 @@ void LayerWindow::Create(EditorComponent* _editor) }); AddWidget(&enableNoneButton); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 450, 300, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/LightWindow.cpp b/Editor/LightWindow.cpp index 1a056c38d..00804d335 100644 --- a/Editor/LightWindow.cpp +++ b/Editor/LightWindow.cpp @@ -12,16 +12,51 @@ using namespace wi::scene; void LightWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Light Window"); - SetSize(XMFLOAT2(650, 300)); + wi::gui::Window::Create(ICON_POINTLIGHT " Light", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(650, 700)); - float x = 450; + closeButton.SetTooltip("Delete LightComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().lights.Remove(entity); + editor->GetCurrentScene().aabb_lights.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 130; float y = 0; float hei = 18; float step = hei + 2; + float wid = 130; + + + float mod_x = 10; + + colorPicker.Create("Light Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(mod_x, y)); + colorPicker.SetVisible(true); + colorPicker.SetEnabled(false); + colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { + LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); + if (light != nullptr) + { + light->color = args.color.toFloat3(); + } + }); + AddWidget(&colorPicker); + + float mod_wid = colorPicker.GetScale().x; + y += colorPicker.GetScale().y + 5; intensitySlider.Create(0, 1000, 0, 100000, "Intensity: "); - intensitySlider.SetSize(XMFLOAT2(100, hei)); + intensitySlider.SetSize(XMFLOAT2(wid, hei)); intensitySlider.SetPos(XMFLOAT2(x, y)); intensitySlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -35,7 +70,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&intensitySlider); rangeSlider.Create(1, 1000, 0, 100000, "Range: "); - rangeSlider.SetSize(XMFLOAT2(100, hei)); + rangeSlider.SetSize(XMFLOAT2(wid, hei)); rangeSlider.SetPos(XMFLOAT2(x, y += step)); rangeSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -49,7 +84,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&rangeSlider); outerConeAngleSlider.Create(0.1f, XM_PIDIV2 - 0.01f, 0, 100000, "Outer Cone Angle: "); - outerConeAngleSlider.SetSize(XMFLOAT2(100, hei)); + outerConeAngleSlider.SetSize(XMFLOAT2(wid, hei)); outerConeAngleSlider.SetPos(XMFLOAT2(x, y += step)); outerConeAngleSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -63,7 +98,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&outerConeAngleSlider); innerConeAngleSlider.Create(0, XM_PI - 0.01f, 0, 100000, "Inner Cone Angle: "); - innerConeAngleSlider.SetSize(XMFLOAT2(100, hei)); + innerConeAngleSlider.SetSize(XMFLOAT2(wid, hei)); innerConeAngleSlider.SetPos(XMFLOAT2(x, y += step)); innerConeAngleSlider.OnSlide([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -132,68 +167,8 @@ void LightWindow::Create(EditorComponent* _editor) staticCheckBox.SetTooltip("Static lights will only be used for baking into lightmaps."); AddWidget(&staticCheckBox); - addLightButton.Create("Add Light"); - addLightButton.SetPos(XMFLOAT2(x, y += step)); - addLightButton.SetSize(XMFLOAT2(150, hei)); - addLightButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = editor->GetCurrentScene().Entity_CreateLight("editorLight", XMFLOAT3(0, 3, 0), XMFLOAT3(1, 1, 1), 2, 60); - LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); - if (light != nullptr) - { - light->type = (LightComponent::LightType)typeSelectorComboBox.GetSelected(); - - switch (light->type) - { - case LightComponent::LightType::DIRECTIONAL: - light->intensity = 10; - break; - case LightComponent::LightType::SPOT: - light->intensity = 100; - break; - case LightComponent::LightType::POINT: - light->intensity = 20; - break; - default: - break; - } - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - } - else - { - assert(0); - } - }); - addLightButton.SetTooltip("Add a light to the scene."); - AddWidget(&addLightButton); - - - colorPicker.Create("Light Color", false); - colorPicker.SetPos(XMFLOAT2(10, 0)); - colorPicker.SetVisible(true); - colorPicker.SetEnabled(false); - colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { - LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); - if (light != nullptr) - { - light->color = args.color.toFloat3(); - } - }); - AddWidget(&colorPicker); - typeSelectorComboBox.Create("Type: "); - typeSelectorComboBox.SetSize(XMFLOAT2(150, hei)); + typeSelectorComboBox.SetSize(XMFLOAT2(wid, hei)); typeSelectorComboBox.SetPos(XMFLOAT2(x, y += step)); typeSelectorComboBox.OnSelect([&](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); @@ -206,17 +181,13 @@ void LightWindow::Create(EditorComponent* _editor) typeSelectorComboBox.AddItem("Directional"); typeSelectorComboBox.AddItem("Point"); typeSelectorComboBox.AddItem("Spot"); - //typeSelectorComboBox.AddItem("Sphere"); - //typeSelectorComboBox.AddItem("Disc"); - //typeSelectorComboBox.AddItem("Rectangle"); - //typeSelectorComboBox.AddItem("Tube"); typeSelectorComboBox.SetTooltip("Choose the light source type..."); typeSelectorComboBox.SetSelected((int)LightComponent::POINT); AddWidget(&typeSelectorComboBox); shadowResolutionComboBox.Create("Shadow resolution: "); shadowResolutionComboBox.SetTooltip("You can force a fixed resolution for this light's shadow map to avoid dynamic scaling.\nIf you leave it as dynamic, the resolution will be scaled between 0 and the max shadow resolution in the renderer for this light type, based on light's distance and size."); - shadowResolutionComboBox.SetSize(XMFLOAT2(150, hei)); + shadowResolutionComboBox.SetSize(XMFLOAT2(wid, hei)); shadowResolutionComboBox.SetPos(XMFLOAT2(x, y += step)); shadowResolutionComboBox.AddItem("Dynamic", uint64_t(-1)); shadowResolutionComboBox.AddItem("32", 32); @@ -235,12 +206,11 @@ void LightWindow::Create(EditorComponent* _editor) shadowResolutionComboBox.SetSelected(0); AddWidget(&shadowResolutionComboBox); - y += step; - x -= 100; + y += step * 0.5f; lensflare_Label.Create("Lens flare textures: "); - lensflare_Label.SetPos(XMFLOAT2(x, y += step)); - lensflare_Label.SetSize(XMFLOAT2(140, hei)); + lensflare_Label.SetPos(XMFLOAT2(mod_x, y += step)); + lensflare_Label.SetSize(XMFLOAT2(wid, hei)); AddWidget(&lensflare_Label); for (size_t i = 0; i < arraysize(lensflare_Button); ++i) @@ -248,8 +218,8 @@ void LightWindow::Create(EditorComponent* _editor) lensflare_Button[i].Create("LensFlareSlot"); lensflare_Button[i].SetText(""); lensflare_Button[i].SetTooltip("Load a lensflare texture to this slot"); - lensflare_Button[i].SetPos(XMFLOAT2(x, y += step)); - lensflare_Button[i].SetSize(XMFLOAT2(260, hei)); + lensflare_Button[i].SetPos(XMFLOAT2(mod_x, y += step)); + lensflare_Button[i].SetSize(XMFLOAT2(mod_wid, hei)); lensflare_Button[i].OnClick([=](wi::gui::EventArgs args) { LightComponent* light = editor->GetCurrentScene().lights.GetComponent(entity); if (light == nullptr) @@ -285,8 +255,7 @@ void LightWindow::Create(EditorComponent* _editor) AddWidget(&lensflare_Button[i]); } - - Translate(XMFLOAT3(120, 30, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/LightWindow.h b/Editor/LightWindow.h index 75c2a3775..6bd2aa16b 100644 --- a/Editor/LightWindow.h +++ b/Editor/LightWindow.h @@ -25,7 +25,6 @@ public: wi::gui::CheckBox haloCheckBox; wi::gui::CheckBox volumetricsCheckBox; wi::gui::CheckBox staticCheckBox; - wi::gui::Button addLightButton; wi::gui::ColorPicker colorPicker; wi::gui::ComboBox typeSelectorComboBox; wi::gui::ComboBox shadowResolutionComboBox; diff --git a/Editor/MaterialWindow.cpp b/Editor/MaterialWindow.cpp index 7864a0ba2..ba6964f5e 100644 --- a/Editor/MaterialWindow.cpp +++ b/Editor/MaterialWindow.cpp @@ -9,16 +9,31 @@ using namespace wi::scene; void MaterialWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Material Window"); - SetSize(XMFLOAT2(730, 620)); + wi::gui::Window::Create(ICON_MATERIAL " Material", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(300, 1200)); + + closeButton.SetTooltip("Delete MaterialComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().materials.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float hei = 18; float step = hei + 2; - float x = 670, y = 0; + float x = 150, y = 0; + float wid = 130; shadowReceiveCheckBox.Create("Receive Shadow: "); shadowReceiveCheckBox.SetTooltip("Receives shadow or not?"); - shadowReceiveCheckBox.SetPos(XMFLOAT2(540, y)); + shadowReceiveCheckBox.SetPos(XMFLOAT2(x, y)); shadowReceiveCheckBox.SetSize(XMFLOAT2(hei, hei)); shadowReceiveCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -29,7 +44,7 @@ void MaterialWindow::Create(EditorComponent* _editor) shadowCasterCheckBox.Create("Cast Shadow: "); shadowCasterCheckBox.SetTooltip("The subset will contribute to the scene shadows if enabled."); - shadowCasterCheckBox.SetPos(XMFLOAT2(670, y)); + shadowCasterCheckBox.SetPos(XMFLOAT2(x, y += step)); shadowCasterCheckBox.SetSize(XMFLOAT2(hei, hei)); shadowCasterCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -40,7 +55,7 @@ void MaterialWindow::Create(EditorComponent* _editor) useVertexColorsCheckBox.Create("Use vertex colors: "); useVertexColorsCheckBox.SetTooltip("Enable if you want to render the mesh with vertex colors (must have appropriate vertex buffer)"); - useVertexColorsCheckBox.SetPos(XMFLOAT2(670, y += step)); + useVertexColorsCheckBox.SetPos(XMFLOAT2(x, y += step)); useVertexColorsCheckBox.SetSize(XMFLOAT2(hei, hei)); useVertexColorsCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -49,9 +64,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&useVertexColorsCheckBox); - specularGlossinessCheckBox.Create("Specular-glossiness workflow: "); + specularGlossinessCheckBox.Create("Spec-gloss workflow: "); specularGlossinessCheckBox.SetTooltip("If enabled, surface map will be viewed like it contains specular color (RGB) and smoothness (A)"); - specularGlossinessCheckBox.SetPos(XMFLOAT2(670, y += step)); + specularGlossinessCheckBox.SetPos(XMFLOAT2(x, y += step)); specularGlossinessCheckBox.SetSize(XMFLOAT2(hei, hei)); specularGlossinessCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -61,9 +76,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&specularGlossinessCheckBox); - occlusionPrimaryCheckBox.Create("Occlusion - Primary: "); + occlusionPrimaryCheckBox.Create("Occlusion 1: "); occlusionPrimaryCheckBox.SetTooltip("If enabled, surface map's RED channel will be used as occlusion map"); - occlusionPrimaryCheckBox.SetPos(XMFLOAT2(670, y += step)); + occlusionPrimaryCheckBox.SetPos(XMFLOAT2(x, y += step)); occlusionPrimaryCheckBox.SetSize(XMFLOAT2(hei, hei)); occlusionPrimaryCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -72,9 +87,9 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&occlusionPrimaryCheckBox); - occlusionSecondaryCheckBox.Create("Occlusion - Secondary: "); + occlusionSecondaryCheckBox.Create("Occlusion 2: "); occlusionSecondaryCheckBox.SetTooltip("If enabled, occlusion map's RED channel will be used as occlusion map"); - occlusionSecondaryCheckBox.SetPos(XMFLOAT2(670, y += step)); + occlusionSecondaryCheckBox.SetPos(XMFLOAT2(x, y += step)); occlusionSecondaryCheckBox.SetSize(XMFLOAT2(hei, hei)); occlusionSecondaryCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -85,7 +100,7 @@ void MaterialWindow::Create(EditorComponent* _editor) windCheckBox.Create("Wind: "); windCheckBox.SetTooltip("If enabled, vertex wind weights will affect how much wind offset affects the subset."); - windCheckBox.SetPos(XMFLOAT2(670, y += step)); + windCheckBox.SetPos(XMFLOAT2(x, y += step)); windCheckBox.SetSize(XMFLOAT2(hei, hei)); windCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -96,7 +111,7 @@ void MaterialWindow::Create(EditorComponent* _editor) doubleSidedCheckBox.Create("Double sided: "); doubleSidedCheckBox.SetTooltip("Decide whether to render both sides of the material (It's also possible to set this behaviour per mesh)."); - doubleSidedCheckBox.SetPos(XMFLOAT2(540, y)); + doubleSidedCheckBox.SetPos(XMFLOAT2(x, y += step)); doubleSidedCheckBox.SetSize(XMFLOAT2(hei, hei)); doubleSidedCheckBox.OnClick([&](wi::gui::EventArgs args) { MaterialComponent* material = editor->GetCurrentScene().materials.GetComponent(entity); @@ -106,11 +121,6 @@ void MaterialWindow::Create(EditorComponent* _editor) AddWidget(&doubleSidedCheckBox); - - x = 520; - float wid = 170; - - shaderTypeComboBox.Create("Shader: "); shaderTypeComboBox.SetTooltip("Select a shader for this material. \nCustom shaders (*) will also show up here (see wi::renderer:RegisterCustomShader() for more info.)\nNote that custom shaders (*) can't select between blend modes, as they are created with an explicit blend mode."); shaderTypeComboBox.SetPos(XMFLOAT2(x, y += step)); @@ -133,12 +143,12 @@ void MaterialWindow::Create(EditorComponent* _editor) } }); shaderTypeComboBox.AddItem("PBR", MaterialComponent::SHADERTYPE_PBR); - shaderTypeComboBox.AddItem("PBR + Planar reflections", MaterialComponent::SHADERTYPE_PBR_PLANARREFLECTION); - shaderTypeComboBox.AddItem("PBR + Par. occl. mapping", MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING); - shaderTypeComboBox.AddItem("PBR + Anisotropic", MaterialComponent::SHADERTYPE_PBR_ANISOTROPIC); - shaderTypeComboBox.AddItem("PBR + Cloth", MaterialComponent::SHADERTYPE_PBR_CLOTH); - shaderTypeComboBox.AddItem("PBR + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLEARCOAT); - shaderTypeComboBox.AddItem("PBR + Cloth + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLOTH_CLEARCOAT); + shaderTypeComboBox.AddItem("Planar reflections", MaterialComponent::SHADERTYPE_PBR_PLANARREFLECTION); + shaderTypeComboBox.AddItem("Par. occl. mapping", MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING); + shaderTypeComboBox.AddItem("Anisotropic", MaterialComponent::SHADERTYPE_PBR_ANISOTROPIC); + shaderTypeComboBox.AddItem("Cloth", MaterialComponent::SHADERTYPE_PBR_CLOTH); + shaderTypeComboBox.AddItem("Clear coat", MaterialComponent::SHADERTYPE_PBR_CLEARCOAT); + shaderTypeComboBox.AddItem("Cloth + Clear coat", MaterialComponent::SHADERTYPE_PBR_CLOTH_CLEARCOAT); shaderTypeComboBox.AddItem("Water", MaterialComponent::SHADERTYPE_WATER); shaderTypeComboBox.AddItem("Cartoon", MaterialComponent::SHADERTYPE_CARTOON); shaderTypeComboBox.AddItem("Unlit", MaterialComponent::SHADERTYPE_UNLIT); @@ -195,7 +205,6 @@ void MaterialWindow::Create(EditorComponent* _editor) // Sliders: - wid = 150; normalMapSlider.Create(0, 4, 1, 4000, "Normalmap: "); normalMapSlider.SetTooltip("How much the normal map should distort the face normals (bumpiness)."); @@ -285,8 +294,7 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&refractionSlider); - pomSlider.Create(0, 0.1f, 0.0f, 1000, "Parallax Occlusion Mapping: "); - pomSlider.SetTooltip("Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); + pomSlider.Create(0, 0.1f, 0.0f, 1000, "Par Occl Mapping: "); pomSlider.SetSize(XMFLOAT2(wid, hei)); pomSlider.SetPos(XMFLOAT2(x, y += step)); pomSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -296,7 +304,7 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&pomSlider); - displacementMappingSlider.Create(0, 0.1f, 0.0f, 1000, "Displacement Mapping: "); + displacementMappingSlider.Create(0, 0.1f, 0.0f, 1000, "Displacement: "); displacementMappingSlider.SetTooltip("Adjust how much the bump map should modulate the geometry when using tessellation."); displacementMappingSlider.SetSize(XMFLOAT2(wid, hei)); displacementMappingSlider.SetPos(XMFLOAT2(x, y += step)); @@ -430,11 +438,10 @@ void MaterialWindow::Create(EditorComponent* _editor) hei = 20; step = hei + 2; x = 10; - y = 0; materialNameField.Create("MaterialName"); materialNameField.SetTooltip("Set a name for the material..."); - materialNameField.SetPos(XMFLOAT2(10, y)); + materialNameField.SetPos(XMFLOAT2(10, y += step)); materialNameField.SetSize(XMFLOAT2(300, hei)); materialNameField.OnInputAccepted([=](wi::gui::EventArgs args) { NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); @@ -447,28 +454,6 @@ void MaterialWindow::Create(EditorComponent* _editor) }); AddWidget(&materialNameField); - newMaterialButton.Create("New Material"); - newMaterialButton.SetPos(XMFLOAT2(10 + 5 + 300, y)); - newMaterialButton.SetSize(XMFLOAT2(100, hei)); - newMaterialButton.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - Entity entity = scene.Entity_CreateMaterial("editorMaterial"); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - editor->RefreshEntityTree(); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - SetEntity(entity); - }); - AddWidget(&newMaterialButton); - colorComboBox.Create("Color picker mode: "); colorComboBox.SetSize(XMFLOAT2(120, hei)); colorComboBox.SetPos(XMFLOAT2(x + 150, y += step)); @@ -480,7 +465,7 @@ void MaterialWindow::Create(EditorComponent* _editor) colorComboBox.SetTooltip("Choose the destination data of the color picker."); AddWidget(&colorComboBox); - colorPicker.Create("Color", false); + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); colorPicker.SetPos(XMFLOAT2(10, y += step)); colorPicker.SetVisible(true); colorPicker.SetEnabled(true); @@ -689,7 +674,7 @@ void MaterialWindow::Create(EditorComponent* _editor) AddWidget(&textureSlotUvsetField); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 880, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -708,9 +693,19 @@ void MaterialWindow::SetEntity(Entity entity) { SetEnabled(true); - const NameComponent& name = *scene.names.GetComponent(entity); - - materialNameField.SetValue(name.name); + const NameComponent* name = scene.names.GetComponent(entity); + if (name == nullptr) + { + materialNameField.SetValue("[no_name] " + std::to_string(entity)); + } + else if (name->name.empty()) + { + materialNameField.SetValue("[name_empty] " + std::to_string(entity)); + } + else + { + materialNameField.SetValue(name->name); + } shadowReceiveCheckBox.SetCheck(material->IsReceiveShadow()); shadowCasterCheckBox.SetCheck(material->IsCastingShadow()); useVertexColorsCheckBox.SetCheck(material->IsUsingVertexColors()); @@ -777,8 +772,8 @@ void MaterialWindow::SetEntity(Entity entity) pomSlider.SetRange(0, 0.99f); break; case MaterialComponent::SHADERTYPE_PBR_PARALLAXOCCLUSIONMAPPING: - pomSlider.SetText("Parallax Occlusion Mapping: "); - pomSlider.SetTooltip("Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); + pomSlider.SetText("Par Occl Mapping: "); + pomSlider.SetTooltip("[Parallax Occlusion Mapping] Adjust how much the bump map should modulate the surface parallax effect. \nOnly works with PBR + Parallax shader."); pomSlider.SetRange(0, 0.1f); break; default: @@ -833,5 +828,4 @@ void MaterialWindow::SetEntity(Entity entity) textureSlotUvsetField.SetText(""); } - newMaterialButton.SetEnabled(true); } diff --git a/Editor/MaterialWindow.h b/Editor/MaterialWindow.h index d58203c7e..4620b3115 100644 --- a/Editor/MaterialWindow.h +++ b/Editor/MaterialWindow.h @@ -13,7 +13,6 @@ public: void SetEntity(wi::ecs::Entity entity); wi::gui::TextInputField materialNameField; - wi::gui::Button newMaterialButton; wi::gui::CheckBox shadowReceiveCheckBox; wi::gui::CheckBox shadowCasterCheckBox; wi::gui::CheckBox useVertexColorsCheckBox; diff --git a/Editor/MeshWindow.cpp b/Editor/MeshWindow.cpp index 975e89a22..6e77422cf 100644 --- a/Editor/MeshWindow.cpp +++ b/Editor/MeshWindow.cpp @@ -14,25 +14,26 @@ using namespace wi::scene; void MeshWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Mesh Window"); - SetSize(XMFLOAT2(580, 380)); + wi::gui::Window::Create(ICON_MESH " Mesh", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(580, 720)); - float x = 150; + float x = 95; float y = 0; float hei = 18; float step = hei + 2; + float wid = 170; float infolabel_height = 190; meshInfoLabel.Create("Mesh Info"); - meshInfoLabel.SetPos(XMFLOAT2(x - 50, y)); - meshInfoLabel.SetSize(XMFLOAT2(450, infolabel_height)); + meshInfoLabel.SetPos(XMFLOAT2(20, y)); + meshInfoLabel.SetSize(XMFLOAT2(260, infolabel_height)); meshInfoLabel.SetColor(wi::Color::Transparent()); AddWidget(&meshInfoLabel); // Left side: y = infolabel_height + 5; - subsetComboBox.Create("Selected subset: "); + subsetComboBox.Create("Select subset: "); subsetComboBox.SetSize(XMFLOAT2(40, hei)); subsetComboBox.SetPos(XMFLOAT2(x, y)); subsetComboBox.SetEnabled(false); @@ -48,7 +49,7 @@ void MeshWindow::Create(EditorComponent* _editor) } } }); - subsetComboBox.SetTooltip("Select a subset. A subset can also be selected by picking it in the 3D scene."); + subsetComboBox.SetTooltip("Select a subset. A subset can also be selected by picking it in the 3D scene.\nLook at the material window when a subset is selected to edit it."); AddWidget(&subsetComboBox); doubleSidedCheckBox.Create("Double Sided: "); @@ -101,7 +102,7 @@ void MeshWindow::Create(EditorComponent* _editor) massSlider.Create(0, 10, 1, 100000, "Mass: "); massSlider.SetTooltip("Set the mass amount for the physics engine."); - massSlider.SetSize(XMFLOAT2(100, hei)); + massSlider.SetSize(XMFLOAT2(wid, hei)); massSlider.SetPos(XMFLOAT2(x, y += step)); massSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -114,7 +115,7 @@ void MeshWindow::Create(EditorComponent* _editor) frictionSlider.Create(0, 1, 0.5f, 100000, "Friction: "); frictionSlider.SetTooltip("Set the friction amount for the physics engine."); - frictionSlider.SetSize(XMFLOAT2(100, hei)); + frictionSlider.SetSize(XMFLOAT2(wid, hei)); frictionSlider.SetPos(XMFLOAT2(x, y += step)); frictionSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -127,7 +128,7 @@ void MeshWindow::Create(EditorComponent* _editor) restitutionSlider.Create(0, 1, 0, 100000, "Restitution: "); restitutionSlider.SetTooltip("Set the restitution amount for the physics engine."); - restitutionSlider.SetSize(XMFLOAT2(100, hei)); + restitutionSlider.SetSize(XMFLOAT2(wid, hei)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { SoftBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().softbodies.GetComponent(entity); @@ -140,8 +141,8 @@ void MeshWindow::Create(EditorComponent* _editor) impostorCreateButton.Create("Create Impostor"); impostorCreateButton.SetTooltip("Create an impostor image of the mesh. The mesh will be replaced by this image when far away, to render faster."); - impostorCreateButton.SetSize(XMFLOAT2(200, hei)); - impostorCreateButton.SetPos(XMFLOAT2(x - 50, y += step)); + impostorCreateButton.SetSize(XMFLOAT2(wid, hei)); + impostorCreateButton.SetPos(XMFLOAT2(x, y += step)); impostorCreateButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); ImpostorComponent* impostor = scene.impostors.GetComponent(entity); @@ -158,9 +159,9 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&impostorCreateButton); - impostorDistanceSlider.Create(0, 1000, 100, 10000, "Impostor Distance: "); + impostorDistanceSlider.Create(0, 1000, 100, 10000, "Impostor Dist: "); impostorDistanceSlider.SetTooltip("Assign the distance where the mesh geometry should be switched to the impostor image."); - impostorDistanceSlider.SetSize(XMFLOAT2(100, hei)); + impostorDistanceSlider.SetSize(XMFLOAT2(wid, hei)); impostorDistanceSlider.SetPos(XMFLOAT2(x, y += step)); impostorDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { ImpostorComponent* impostor = editor->GetCurrentScene().impostors.GetComponent(entity); @@ -171,9 +172,9 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&impostorDistanceSlider); - tessellationFactorSlider.Create(0, 100, 0, 10000, "Tessellation Factor: "); + tessellationFactorSlider.Create(0, 100, 0, 10000, "Tess Factor: "); tessellationFactorSlider.SetTooltip("Set the dynamic tessellation amount. Tessellation should be enabled in the Renderer window and your GPU must support it!"); - tessellationFactorSlider.SetSize(XMFLOAT2(100, hei)); + tessellationFactorSlider.SetSize(XMFLOAT2(wid, hei)); tessellationFactorSlider.SetPos(XMFLOAT2(x, y += step)); tessellationFactorSlider.OnSlide([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); @@ -184,10 +185,13 @@ void MeshWindow::Create(EditorComponent* _editor) }); AddWidget(&tessellationFactorSlider); + float mod_x = x - 20; + float mod_wid = wid + 40; + flipCullingButton.Create("Flip Culling"); flipCullingButton.SetTooltip("Flip faces to reverse triangle culling order."); - flipCullingButton.SetSize(XMFLOAT2(200, hei)); - flipCullingButton.SetPos(XMFLOAT2(x - 50, y += step)); + flipCullingButton.SetSize(XMFLOAT2(mod_wid, hei)); + flipCullingButton.SetPos(XMFLOAT2(mod_x, y += step)); flipCullingButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -200,8 +204,8 @@ void MeshWindow::Create(EditorComponent* _editor) flipNormalsButton.Create("Flip Normals"); flipNormalsButton.SetTooltip("Flip surface normals."); - flipNormalsButton.SetSize(XMFLOAT2(200, hei)); - flipNormalsButton.SetPos(XMFLOAT2(x - 50, y += step)); + flipNormalsButton.SetSize(XMFLOAT2(mod_wid, hei)); + flipNormalsButton.SetPos(XMFLOAT2(mod_x, y += step)); flipNormalsButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -214,8 +218,8 @@ void MeshWindow::Create(EditorComponent* _editor) computeNormalsSmoothButton.Create("Compute Normals [SMOOTH]"); computeNormalsSmoothButton.SetTooltip("Compute surface normals of the mesh. Resulting normals will be unique per vertex. This can reduce vertex count, but is slow."); - computeNormalsSmoothButton.SetSize(XMFLOAT2(200, hei)); - computeNormalsSmoothButton.SetPos(XMFLOAT2(x - 50, y += step)); + computeNormalsSmoothButton.SetSize(XMFLOAT2(mod_wid, hei)); + computeNormalsSmoothButton.SetPos(XMFLOAT2(mod_x, y += step)); computeNormalsSmoothButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -228,8 +232,8 @@ void MeshWindow::Create(EditorComponent* _editor) computeNormalsHardButton.Create("Compute Normals [HARD]"); computeNormalsHardButton.SetTooltip("Compute surface normals of the mesh. Resulting normals will be unique per face. This can increase vertex count."); - computeNormalsHardButton.SetSize(XMFLOAT2(200, hei)); - computeNormalsHardButton.SetPos(XMFLOAT2(x - 50, y += step)); + computeNormalsHardButton.SetSize(XMFLOAT2(mod_wid, hei)); + computeNormalsHardButton.SetPos(XMFLOAT2(mod_x, y += step)); computeNormalsHardButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -242,8 +246,8 @@ void MeshWindow::Create(EditorComponent* _editor) recenterButton.Create("Recenter"); recenterButton.SetTooltip("Recenter mesh to AABB center."); - recenterButton.SetSize(XMFLOAT2(200, hei)); - recenterButton.SetPos(XMFLOAT2(x - 50, y += step)); + recenterButton.SetSize(XMFLOAT2(mod_wid, hei)); + recenterButton.SetPos(XMFLOAT2(mod_x, y += step)); recenterButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -256,8 +260,8 @@ void MeshWindow::Create(EditorComponent* _editor) recenterToBottomButton.Create("RecenterToBottom"); recenterToBottomButton.SetTooltip("Recenter mesh to AABB bottom."); - recenterToBottomButton.SetSize(XMFLOAT2(200, hei)); - recenterToBottomButton.SetPos(XMFLOAT2(x - 50, y += step)); + recenterToBottomButton.SetSize(XMFLOAT2(mod_wid, hei)); + recenterToBottomButton.SetPos(XMFLOAT2(mod_x, y += step)); recenterToBottomButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -270,8 +274,8 @@ void MeshWindow::Create(EditorComponent* _editor) mergeButton.Create("Merge Selected"); mergeButton.SetTooltip("Merges selected objects/meshes into one."); - mergeButton.SetSize(XMFLOAT2(200, hei)); - mergeButton.SetPos(XMFLOAT2(x - 50, y += step)); + mergeButton.SetSize(XMFLOAT2(mod_wid, hei)); + mergeButton.SetPos(XMFLOAT2(mod_x, y += step)); mergeButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); MeshComponent merged_mesh; @@ -452,8 +456,8 @@ void MeshWindow::Create(EditorComponent* _editor) optimizeButton.Create("Optimize"); optimizeButton.SetTooltip("Run the meshoptimizer library."); - optimizeButton.SetSize(XMFLOAT2(200, hei)); - optimizeButton.SetPos(XMFLOAT2(x - 50, y += step)); + optimizeButton.SetSize(XMFLOAT2(mod_wid, hei)); + optimizeButton.SetPos(XMFLOAT2(mod_x, y += step)); optimizeButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -476,15 +480,9 @@ void MeshWindow::Create(EditorComponent* _editor) - - - // Right side: - x = 150; - y = infolabel_height + 5; - - subsetMaterialComboBox.Create("Subset Material: "); - subsetMaterialComboBox.SetSize(XMFLOAT2(200, hei)); - subsetMaterialComboBox.SetPos(XMFLOAT2(x + 180, y)); + subsetMaterialComboBox.Create("Material: "); + subsetMaterialComboBox.SetSize(XMFLOAT2(wid, hei)); + subsetMaterialComboBox.SetPos(XMFLOAT2(x, y += step)); subsetMaterialComboBox.SetEnabled(false); subsetMaterialComboBox.OnSelect([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -508,8 +506,8 @@ void MeshWindow::Create(EditorComponent* _editor) morphTargetCombo.Create("Morph Target:"); - morphTargetCombo.SetSize(XMFLOAT2(100, hei)); - morphTargetCombo.SetPos(XMFLOAT2(x + 280, y += step)); + morphTargetCombo.SetSize(XMFLOAT2(wid, hei)); + morphTargetCombo.SetPos(XMFLOAT2(x, y += step)); morphTargetCombo.OnSelect([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr && args.iValue < (int)mesh->targets.size()) @@ -522,8 +520,8 @@ void MeshWindow::Create(EditorComponent* _editor) morphTargetSlider.Create(0, 1, 0, 100000, "Weight: "); morphTargetSlider.SetTooltip("Set the weight for morph target"); - morphTargetSlider.SetSize(XMFLOAT2(100, hei)); - morphTargetSlider.SetPos(XMFLOAT2(x + 280, y += step)); + morphTargetSlider.SetSize(XMFLOAT2(wid, hei)); + morphTargetSlider.SetPos(XMFLOAT2(x, y += step)); morphTargetSlider.OnSlide([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr && morphTargetCombo.GetSelected() < (int)mesh->targets.size()) @@ -536,8 +534,8 @@ void MeshWindow::Create(EditorComponent* _editor) lodgenButton.Create("LOD Gen"); lodgenButton.SetTooltip("Generate LODs (levels of detail)."); - lodgenButton.SetSize(XMFLOAT2(200, hei)); - lodgenButton.SetPos(XMFLOAT2(x + 180, y += step)); + lodgenButton.SetSize(XMFLOAT2(wid, hei)); + lodgenButton.SetPos(XMFLOAT2(x, y += step)); lodgenButton.OnClick([&](wi::gui::EventArgs args) { MeshComponent* mesh = editor->GetCurrentScene().meshes.GetComponent(entity); if (mesh != nullptr) @@ -648,29 +646,30 @@ void MeshWindow::Create(EditorComponent* _editor) lodCountSlider.Create(2, 10, 6, 8, "LOD Count: "); lodCountSlider.SetTooltip("This is how many levels of detail will be created."); - lodCountSlider.SetSize(XMFLOAT2(100, hei)); - lodCountSlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodCountSlider.SetSize(XMFLOAT2(wid, hei)); + lodCountSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodCountSlider); lodQualitySlider.Create(0.1f, 1.0f, 0.5f, 10000, "LOD Quality: "); lodQualitySlider.SetTooltip("Lower values will make LODs more agressively simplified."); - lodQualitySlider.SetSize(XMFLOAT2(100, hei)); - lodQualitySlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodQualitySlider.SetSize(XMFLOAT2(wid, hei)); + lodQualitySlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodQualitySlider); lodErrorSlider.Create(0.01f, 0.1f, 0.03f, 10000, "LOD Error: "); lodErrorSlider.SetTooltip("Lower values will make more precise levels of detail."); - lodErrorSlider.SetSize(XMFLOAT2(100, hei)); - lodErrorSlider.SetPos(XMFLOAT2(x + 280, y += step)); + lodErrorSlider.SetSize(XMFLOAT2(wid, hei)); + lodErrorSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodErrorSlider); lodSloppyCheckBox.Create("Sloppy LOD: "); lodSloppyCheckBox.SetTooltip("Use the sloppy simplification algorithm, which is faster but doesn't preserve shape well."); lodSloppyCheckBox.SetSize(XMFLOAT2(hei, hei)); - lodSloppyCheckBox.SetPos(XMFLOAT2(x + 280, y += step)); + lodSloppyCheckBox.SetPos(XMFLOAT2(x, y += step)); AddWidget(&lodSloppyCheckBox); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 1000, 80, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY, -1); @@ -697,16 +696,18 @@ void MeshWindow::SetEntity(Entity entity, int subset) ss += "Index count: " + std::to_string(mesh->indices.size()) + "\n"; ss += "Subset count: " + std::to_string(mesh->subsets.size()) + " (" + std::to_string(mesh->GetLODCount()) + " LODs)\n"; ss += "GPU memory: " + std::to_string((mesh->generalBuffer.GetDesc().size + mesh->streamoutBuffer.GetDesc().size) / 1024.0f / 1024.0f) + " MB\n"; - ss += "\nVertex buffers: "; - if (mesh->vb_pos_nor_wind.IsValid()) ss += "position; "; - if (mesh->vb_uvs.IsValid()) ss += "uvsets; "; - if (mesh->vb_atl.IsValid()) ss += "atlas; "; - if (mesh->vb_col.IsValid()) ss += "color; "; - if (mesh->so_pre.IsValid()) ss += "previous_position; "; - if (mesh->vb_bon.IsValid()) ss += "bone; "; - if (mesh->vb_tan.IsValid()) ss += "tangent; "; - if (mesh->so_pos_nor_wind.IsValid()) ss += "streamout_position; "; - if (mesh->so_tan.IsValid()) ss += "streamout_tangents; "; + ss += "\nVertex buffers:\n"; + if (!mesh->vertex_positions.empty()) ss += "\tposition;\n"; + if (!mesh->vertex_normals.empty()) ss += "\tnormal;\n"; + if (!mesh->vertex_windweights.empty()) ss += "\twind;\n"; + if (mesh->vb_uvs.IsValid()) ss += "\tuvsets;\n"; + if (mesh->vb_atl.IsValid()) ss += "\tatlas;\n"; + if (mesh->vb_col.IsValid()) ss += "\tcolor;\n"; + if (mesh->so_pre.IsValid()) ss += "\tprevious_position;\n"; + if (mesh->vb_bon.IsValid()) ss += "\tbone;\n"; + if (mesh->vb_tan.IsValid()) ss += "\ttangent;\n"; + if (mesh->so_pos_nor_wind.IsValid()) ss += "\tstreamout_position;\n"; + if (mesh->so_tan.IsValid()) ss += "\tstreamout_tangents;\n"; meshInfoLabel.SetText(ss); subsetComboBox.ClearItems(); diff --git a/Editor/NameWindow.cpp b/Editor/NameWindow.cpp index 5d09c2194..e54ccaab3 100644 --- a/Editor/NameWindow.cpp +++ b/Editor/NameWindow.cpp @@ -9,13 +9,27 @@ using namespace wi::scene; void NameWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Name Window"); - SetSize(XMFLOAT2(360, 80)); + wi::gui::Window::Create("Name", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(360, 60)); + + closeButton.SetTooltip("Delete NameComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().names.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); float x = 60; float y = 0; float step = 25; - float siz = 280; + float siz = 250; float hei = 20; nameInput.Create(""); @@ -34,7 +48,7 @@ void NameWindow::Create(EditorComponent* _editor) }); AddWidget(&nameInput); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 450, 200, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -60,3 +74,9 @@ void NameWindow::SetEntity(Entity entity) nameInput.SetValue("Select entity to modify name..."); } } + +void NameWindow::Update() +{ + nameInput.SetPos(XMFLOAT2(60, 0)); + nameInput.SetSize(XMFLOAT2(GetSize().x - 65, nameInput.GetSize().y)); +} diff --git a/Editor/NameWindow.h b/Editor/NameWindow.h index a9636b9c2..bf7bf0afa 100644 --- a/Editor/NameWindow.h +++ b/Editor/NameWindow.h @@ -13,5 +13,7 @@ public: void SetEntity(wi::ecs::Entity entity); wi::gui::TextInputField nameInput; + + void Update(); }; diff --git a/Editor/ObjectWindow.cpp b/Editor/ObjectWindow.cpp index 0d9adfa1e..77cdad1c7 100644 --- a/Editor/ObjectWindow.cpp +++ b/Editor/ObjectWindow.cpp @@ -260,18 +260,19 @@ void ObjectWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Object Window"); - SetSize(XMFLOAT2(670, 320)); + wi::gui::Window::Create(ICON_OBJECT " Object", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(670, 860)); - float x = 200; + float x = 140; float y = 0; float hei = 18; float step = hei + 2; + float wid = 130; nameLabel.Create("NAMELABEL"); nameLabel.SetText(""); - nameLabel.SetPos(XMFLOAT2(x - 30, y)); - nameLabel.SetSize(XMFLOAT2(150, hei)); + nameLabel.SetPos(XMFLOAT2(x, y)); + nameLabel.SetSize(XMFLOAT2(wid, hei)); AddWidget(&nameLabel); renderableCheckBox.Create("Renderable: "); @@ -304,7 +305,7 @@ void ObjectWindow::Create(EditorComponent* _editor) ditherSlider.Create(0, 1, 0, 1000, "Transparency: "); ditherSlider.SetTooltip("Adjust transparency of the object. Opaque materials will use dithered transparency in this case!"); - ditherSlider.SetSize(XMFLOAT2(100, hei)); + ditherSlider.SetSize(XMFLOAT2(wid, hei)); ditherSlider.SetPos(XMFLOAT2(x, y += step)); ditherSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -317,7 +318,7 @@ void ObjectWindow::Create(EditorComponent* _editor) cascadeMaskSlider.Create(0, 3, 0, 3, "Cascade Mask: "); cascadeMaskSlider.SetTooltip("How many shadow cascades to skip when rendering this object into shadow maps? (0: skip none, it will be in all cascades, 1: skip first (biggest cascade), ...etc..."); - cascadeMaskSlider.SetSize(XMFLOAT2(100, hei)); + cascadeMaskSlider.SetSize(XMFLOAT2(wid, hei)); cascadeMaskSlider.SetPos(XMFLOAT2(x, y += step)); cascadeMaskSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -330,7 +331,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lodSlider.Create(0.001f, 10, 1, 10000, "LOD Multiplier: "); lodSlider.SetTooltip("How much the distance to camera will affect LOD selection. (If the mesh has lods)"); - lodSlider.SetSize(XMFLOAT2(100, hei)); + lodSlider.SetSize(XMFLOAT2(wid, hei)); lodSlider.SetPos(XMFLOAT2(x, y += step)); lodSlider.OnSlide([&](wi::gui::EventArgs args) { ObjectComponent* object = editor->GetCurrentScene().objects.GetComponent(entity); @@ -345,13 +346,13 @@ void ObjectWindow::Create(EditorComponent* _editor) physicsLabel.Create("PHYSICSLABEL"); physicsLabel.SetText("PHYSICS SETTINGS"); - physicsLabel.SetPos(XMFLOAT2(x - 30, y += step)); - physicsLabel.SetSize(XMFLOAT2(150, hei)); + physicsLabel.SetPos(XMFLOAT2(x, y += step)); + physicsLabel.SetSize(XMFLOAT2(wid, hei)); AddWidget(&physicsLabel); collisionShapeComboBox.Create("Collision Shape: "); - collisionShapeComboBox.SetSize(XMFLOAT2(100, hei)); + collisionShapeComboBox.SetSize(XMFLOAT2(wid, hei)); collisionShapeComboBox.SetPos(XMFLOAT2(x, y += step)); collisionShapeComboBox.AddItem("DISABLED"); collisionShapeComboBox.AddItem("Box"); @@ -462,7 +463,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&collisionShapeComboBox); XSlider.Create(0, 10, 1, 100000, "X: "); - XSlider.SetSize(XMFLOAT2(100, hei)); + XSlider.SetSize(XMFLOAT2(wid, hei)); XSlider.SetPos(XMFLOAT2(x, y += step)); XSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -487,7 +488,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&XSlider); YSlider.Create(0, 10, 1, 100000, "Y: "); - YSlider.SetSize(XMFLOAT2(100, hei)); + YSlider.SetSize(XMFLOAT2(wid, hei)); YSlider.SetPos(XMFLOAT2(x, y += step)); YSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -509,7 +510,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&YSlider); ZSlider.Create(0, 10, 1, 100000, "Z: "); - ZSlider.SetSize(XMFLOAT2(100, hei)); + ZSlider.SetSize(XMFLOAT2(wid, hei)); ZSlider.SetPos(XMFLOAT2(x, y += step)); ZSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -529,7 +530,7 @@ void ObjectWindow::Create(EditorComponent* _editor) massSlider.Create(0, 10, 1, 100000, "Mass: "); massSlider.SetTooltip("Set the mass amount for the physics engine."); - massSlider.SetSize(XMFLOAT2(100, hei)); + massSlider.SetSize(XMFLOAT2(wid, hei)); massSlider.SetPos(XMFLOAT2(x, y += step)); massSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -542,7 +543,7 @@ void ObjectWindow::Create(EditorComponent* _editor) frictionSlider.Create(0, 1, 0.5f, 100000, "Friction: "); frictionSlider.SetTooltip("Set the friction amount for the physics engine."); - frictionSlider.SetSize(XMFLOAT2(100, hei)); + frictionSlider.SetSize(XMFLOAT2(wid, hei)); frictionSlider.SetPos(XMFLOAT2(x, y += step)); frictionSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -555,7 +556,7 @@ void ObjectWindow::Create(EditorComponent* _editor) restitutionSlider.Create(0, 1, 0, 100000, "Restitution: "); restitutionSlider.SetTooltip("Set the restitution amount for the physics engine."); - restitutionSlider.SetSize(XMFLOAT2(100, hei)); + restitutionSlider.SetSize(XMFLOAT2(wid, hei)); restitutionSlider.SetPos(XMFLOAT2(x, y += step)); restitutionSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -568,7 +569,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lineardampingSlider.Create(0, 1, 0, 100000, "Linear Damping: "); lineardampingSlider.SetTooltip("Set the linear damping amount for the physics engine."); - lineardampingSlider.SetSize(XMFLOAT2(100, hei)); + lineardampingSlider.SetSize(XMFLOAT2(wid, hei)); lineardampingSlider.SetPos(XMFLOAT2(x, y += step)); lineardampingSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -581,7 +582,7 @@ void ObjectWindow::Create(EditorComponent* _editor) angulardampingSlider.Create(0, 1, 0, 100000, "Angular Damping: "); angulardampingSlider.SetTooltip("Set the angular damping amount for the physics engine."); - angulardampingSlider.SetSize(XMFLOAT2(100, hei)); + angulardampingSlider.SetSize(XMFLOAT2(wid, hei)); angulardampingSlider.SetPos(XMFLOAT2(x, y += step)); angulardampingSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -594,7 +595,7 @@ void ObjectWindow::Create(EditorComponent* _editor) physicsMeshLODSlider.Create(0, 6, 0, 6, "Physics Mesh LOD: "); physicsMeshLODSlider.SetTooltip("Specify which LOD to use for triangle mesh physics."); - physicsMeshLODSlider.SetSize(XMFLOAT2(100, hei)); + physicsMeshLODSlider.SetSize(XMFLOAT2(wid, hei)); physicsMeshLODSlider.SetPos(XMFLOAT2(x, y += step)); physicsMeshLODSlider.OnSlide([&](wi::gui::EventArgs args) { RigidBodyPhysicsComponent* physicscomponent = editor->GetCurrentScene().rigidbodies.GetComponent(entity); @@ -644,7 +645,7 @@ void ObjectWindow::Create(EditorComponent* _editor) lightmapResolutionSlider.Create(32, 1024, 128, 1024 - 32, "Lightmap resolution: "); lightmapResolutionSlider.SetTooltip("Set the approximate resolution for this object's lightmap. This will be packed into the larger global lightmap later."); - lightmapResolutionSlider.SetSize(XMFLOAT2(100, hei)); + lightmapResolutionSlider.SetSize(XMFLOAT2(wid, hei)); lightmapResolutionSlider.SetPos(XMFLOAT2(x, y += step)); lightmapResolutionSlider.OnSlide([&](wi::gui::EventArgs args) { // unfortunately, we must be pow2 with full float lightmap format, otherwise it could be unlimited (but accumulation blending would suffer then) @@ -654,7 +655,8 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&lightmapResolutionSlider); lightmapSourceUVSetComboBox.Create("UV Set: "); - lightmapSourceUVSetComboBox.SetPos(XMFLOAT2(x - 130, y += step)); + lightmapSourceUVSetComboBox.SetPos(XMFLOAT2(x, y += step)); + lightmapSourceUVSetComboBox.SetSize(XMFLOAT2(wid, hei)); lightmapSourceUVSetComboBox.AddItem("Copy UV 0"); lightmapSourceUVSetComboBox.AddItem("Copy UV 1"); lightmapSourceUVSetComboBox.AddItem("Keep Atlas"); @@ -665,8 +667,8 @@ void ObjectWindow::Create(EditorComponent* _editor) generateLightmapButton.Create("Generate Lightmap"); generateLightmapButton.SetTooltip("Render the lightmap for only this object. It will automatically combined with the global lightmap."); - generateLightmapButton.SetPos(XMFLOAT2(x, y)); - generateLightmapButton.SetSize(XMFLOAT2(140, hei)); + generateLightmapButton.SetPos(XMFLOAT2(x, y += step)); + generateLightmapButton.SetSize(XMFLOAT2(wid, hei)); generateLightmapButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -747,7 +749,7 @@ void ObjectWindow::Create(EditorComponent* _editor) stopLightmapGenButton.Create("Stop Lightmap Gen"); stopLightmapGenButton.SetTooltip("Stop the lightmap rendering and save the lightmap."); stopLightmapGenButton.SetPos(XMFLOAT2(x, y += step)); - stopLightmapGenButton.SetSize(XMFLOAT2(140, hei)); + stopLightmapGenButton.SetSize(XMFLOAT2(wid, hei)); stopLightmapGenButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -768,7 +770,7 @@ void ObjectWindow::Create(EditorComponent* _editor) clearLightmapButton.Create("Clear Lightmap"); clearLightmapButton.SetTooltip("Clear the lightmap from this object."); clearLightmapButton.SetPos(XMFLOAT2(x, y += step)); - clearLightmapButton.SetSize(XMFLOAT2(140, hei)); + clearLightmapButton.SetSize(XMFLOAT2(wid, hei)); clearLightmapButton.OnClick([&](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -785,18 +787,18 @@ void ObjectWindow::Create(EditorComponent* _editor) }); AddWidget(&clearLightmapButton); - y = 10; + y += step; colorComboBox.Create("Color picker mode: "); - colorComboBox.SetSize(XMFLOAT2(120, hei)); - colorComboBox.SetPos(XMFLOAT2(x + 300, y += step)); + colorComboBox.SetSize(XMFLOAT2(wid, hei)); + colorComboBox.SetPos(XMFLOAT2(x, y += step)); colorComboBox.AddItem("Base color"); colorComboBox.AddItem("Emissive color"); colorComboBox.SetTooltip("Choose the destination data of the color picker."); AddWidget(&colorComboBox); - colorPicker.Create("Object Color", false); - colorPicker.SetPos(XMFLOAT2(350, y += step)); + colorPicker.Create("Object Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(5, y += step)); colorPicker.SetVisible(true); colorPicker.SetEnabled(true); colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { @@ -821,7 +823,7 @@ void ObjectWindow::Create(EditorComponent* _editor) AddWidget(&colorPicker); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 720, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); diff --git a/Editor/PaintToolWindow.cpp b/Editor/PaintToolWindow.cpp index 617c47bc9..2baa1c66e 100644 --- a/Editor/PaintToolWindow.cpp +++ b/Editor/PaintToolWindow.cpp @@ -13,18 +13,22 @@ void PaintToolWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Paint Tool Window"); - SetSize(XMFLOAT2(360, 540)); + wi::gui::Window::Create("Paint Tool", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(360, 560)); float x = 105; float y = 0; float hei = 20; float step = hei + 4; + float wid = 160; + + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); + float mod_wid = colorPicker.GetScale().x; modeComboBox.Create("Mode: "); modeComboBox.SetTooltip("Choose paint tool mode"); modeComboBox.SetPos(XMFLOAT2(x, y)); - modeComboBox.SetSize(XMFLOAT2(200, hei)); + modeComboBox.SetSize(XMFLOAT2(wid, hei)); modeComboBox.AddItem("Disabled"); modeComboBox.AddItem("Texture"); modeComboBox.AddItem("Vertexcolor"); @@ -80,8 +84,8 @@ void PaintToolWindow::Create(EditorComponent* _editor) y += step + 5; infoLabel.Create("Paint Tool is disabled."); - infoLabel.SetSize(XMFLOAT2(GetScale().x - 20, 100)); - infoLabel.SetPos(XMFLOAT2(10, y)); + infoLabel.SetSize(XMFLOAT2(mod_wid - 10, 100)); + infoLabel.SetPos(XMFLOAT2(5, y)); infoLabel.SetColor(wi::Color::Transparent()); AddWidget(&infoLabel); @@ -89,50 +93,49 @@ void PaintToolWindow::Create(EditorComponent* _editor) radiusSlider.Create(1.0f, 500.0f, 50, 10000, "Brush Radius: "); radiusSlider.SetTooltip("Set the brush radius in pixel units"); - radiusSlider.SetSize(XMFLOAT2(200, hei)); + radiusSlider.SetSize(XMFLOAT2(wid, hei)); radiusSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&radiusSlider); amountSlider.Create(0, 1, 1, 10000, "Brush Amount: "); amountSlider.SetTooltip("Set the brush amount. 0 = minimum affection, 1 = maximum affection"); - amountSlider.SetSize(XMFLOAT2(200, hei)); + amountSlider.SetSize(XMFLOAT2(wid, hei)); amountSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&amountSlider); falloffSlider.Create(0, 16, 0, 10000, "Brush Falloff: "); falloffSlider.SetTooltip("Set the brush power. 0 = no falloff, 1 = linear falloff, more = falloff power"); - falloffSlider.SetSize(XMFLOAT2(200, hei)); + falloffSlider.SetSize(XMFLOAT2(wid, hei)); falloffSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&falloffSlider); spacingSlider.Create(0, 500, 1, 500, "Brush Spacing: "); spacingSlider.SetTooltip("Brush spacing means how much brush movement (in pixels) starts a new stroke. 0 = new stroke every frame, 100 = every 100 pixel movement since last stroke will start a new stroke."); - spacingSlider.SetSize(XMFLOAT2(200, hei)); + spacingSlider.SetSize(XMFLOAT2(wid, hei)); spacingSlider.SetPos(XMFLOAT2(x, y += step)); AddWidget(&spacingSlider); backfaceCheckBox.Create("Backfaces: "); backfaceCheckBox.SetTooltip("Set whether to paint on backfaces of geometry or not"); backfaceCheckBox.SetSize(XMFLOAT2(hei, hei)); - backfaceCheckBox.SetPos(XMFLOAT2(x, y += step)); + backfaceCheckBox.SetPos(XMFLOAT2(x - 20, y += step)); AddWidget(&backfaceCheckBox); wireCheckBox.Create("Wireframe: "); wireCheckBox.SetTooltip("Set whether to draw wireframe on top of geometry or not"); wireCheckBox.SetSize(XMFLOAT2(hei, hei)); - wireCheckBox.SetPos(XMFLOAT2(x + 100, y)); + wireCheckBox.SetPos(XMFLOAT2(x - 20 + 100, y)); wireCheckBox.SetCheck(true); AddWidget(&wireCheckBox); pressureCheckBox.Create("Pressure: "); pressureCheckBox.SetTooltip("Set whether to use pressure sensitivity (for example pen tablet)"); pressureCheckBox.SetSize(XMFLOAT2(hei, hei)); - pressureCheckBox.SetPos(XMFLOAT2(x + 200, y)); + pressureCheckBox.SetPos(XMFLOAT2(x - 20 + 200, y)); pressureCheckBox.SetCheck(false); AddWidget(&pressureCheckBox); - colorPicker.Create("Color", false); - colorPicker.SetPos(XMFLOAT2(10, y += step)); + colorPicker.SetPos(XMFLOAT2(5, y += step)); AddWidget(&colorPicker); y += colorPicker.GetScale().y; @@ -140,7 +143,7 @@ void PaintToolWindow::Create(EditorComponent* _editor) textureSlotComboBox.Create("Texture Slot: "); textureSlotComboBox.SetTooltip("Choose texture slot of the selected material to paint (texture paint mode only)"); textureSlotComboBox.SetPos(XMFLOAT2(x, y += step)); - textureSlotComboBox.SetSize(XMFLOAT2(200, hei)); + textureSlotComboBox.SetSize(XMFLOAT2(wid, hei)); textureSlotComboBox.AddItem("BaseColor (RGBA)", MaterialComponent::BASECOLORMAP); textureSlotComboBox.AddItem("Normal (RGB)", MaterialComponent::NORMALMAP); textureSlotComboBox.AddItem("SurfaceMap (RGBA)", MaterialComponent::SURFACEMAP); @@ -158,7 +161,7 @@ void PaintToolWindow::Create(EditorComponent* _editor) saveTextureButton.Create("Save Texture"); saveTextureButton.SetTooltip("Save edited texture."); - saveTextureButton.SetSize(XMFLOAT2(200, hei)); + saveTextureButton.SetSize(XMFLOAT2(wid, hei)); saveTextureButton.SetPos(XMFLOAT2(x, y += step)); saveTextureButton.OnClick([this] (wi::gui::EventArgs args) { @@ -255,7 +258,8 @@ void PaintToolWindow::Create(EditorComponent* _editor) AddWidget(&revealTextureButton); Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 550, 50, 0)); - SetVisible(false); + + SetMinimized(true); } void PaintToolWindow::Update(float dt) diff --git a/Editor/PostprocessWindow.cpp b/Editor/PostprocessWindow.cpp index dcbabe5bf..38a9daac3 100644 --- a/Editor/PostprocessWindow.cpp +++ b/Editor/PostprocessWindow.cpp @@ -9,18 +9,20 @@ using namespace wi::graphics; void PostprocessWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("PostProcess Window"); - SetSize(XMFLOAT2(420, 400)); + wi::gui::Window::Create("PostProcess", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(420, 500)); - float x = 150; + float x = 110; float y = 0; float hei = 18; float step = hei + 2; + float wid = 140; + float mod_wid = 60; exposureSlider.Create(0.0f, 3.0f, 1, 10000, "Exposure: "); exposureSlider.SetTooltip("Set the tonemap exposure value"); exposureSlider.SetScriptTip("RenderPath3D::SetExposure(float value)"); - exposureSlider.SetSize(XMFLOAT2(100, hei)); + exposureSlider.SetSize(XMFLOAT2(wid, hei)); exposureSlider.SetPos(XMFLOAT2(x, y)); exposureSlider.SetValue(editor->renderPath->getExposure()); exposureSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -53,7 +55,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoComboBox.Create("AO: "); aoComboBox.SetTooltip("Choose Ambient Occlusion type. RTAO is only available if hardware supports ray tracing"); aoComboBox.SetScriptTip("RenderPath3D::SetAO(int value)"); - aoComboBox.SetSize(XMFLOAT2(150, hei)); + aoComboBox.SetSize(XMFLOAT2(wid, hei)); aoComboBox.SetPos(XMFLOAT2(x, y += step)); aoComboBox.AddItem("Disabled"); aoComboBox.AddItem("SSAO"); @@ -93,7 +95,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoPowerSlider.Create(0.25f, 8.0f, 2, 1000, "Power: "); aoPowerSlider.SetTooltip("Set SSAO Power. Higher values produce darker, more pronounced effect"); - aoPowerSlider.SetSize(XMFLOAT2(100, hei)); + aoPowerSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoPowerSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoPowerSlider.SetValue((float)editor->renderPath->getAOPower()); aoPowerSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -103,7 +105,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoRangeSlider.Create(1.0f, 100.0f, 1, 1000, "Range: "); aoRangeSlider.SetTooltip("Set AO ray length. Only for SSAO and RTAO"); - aoRangeSlider.SetSize(XMFLOAT2(100, hei)); + aoRangeSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoRangeSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoRangeSlider.SetValue((float)editor->renderPath->getAOPower()); aoRangeSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -113,7 +115,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) aoSampleCountSlider.Create(1, 16, 9, 15, "Sample Count: "); aoSampleCountSlider.SetTooltip("Set AO ray count. Only for SSAO"); - aoSampleCountSlider.SetSize(XMFLOAT2(100, hei)); + aoSampleCountSlider.SetSize(XMFLOAT2(mod_wid, hei)); aoSampleCountSlider.SetPos(XMFLOAT2(x + 100, y += step)); aoSampleCountSlider.SetValue((float)editor->renderPath->getAOPower()); aoSampleCountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -132,11 +134,11 @@ void PostprocessWindow::Create(EditorComponent* _editor) }); AddWidget(&ssrCheckBox); - raytracedReflectionsCheckBox.Create("Ray Traced Reflections: "); + raytracedReflectionsCheckBox.Create("RT Reflections: "); raytracedReflectionsCheckBox.SetTooltip("Enable Ray Traced Reflections. Only if GPU supports raytracing."); raytracedReflectionsCheckBox.SetScriptTip("RenderPath3D::SetRaytracedReflectionsEnabled(bool value)"); raytracedReflectionsCheckBox.SetSize(XMFLOAT2(hei, hei)); - raytracedReflectionsCheckBox.SetPos(XMFLOAT2(x + 200, y)); + raytracedReflectionsCheckBox.SetPos(XMFLOAT2(x + 140, y)); raytracedReflectionsCheckBox.SetCheck(editor->renderPath->getRaytracedReflectionEnabled()); raytracedReflectionsCheckBox.OnClick([=](wi::gui::EventArgs args) { editor->renderPath->setRaytracedReflectionsEnabled(args.bValue); @@ -156,7 +158,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) screenSpaceShadowsRangeSlider.Create(0.1f, 10.0f, 1, 1000, "Range: "); screenSpaceShadowsRangeSlider.SetTooltip("Range of contact shadows"); - screenSpaceShadowsRangeSlider.SetSize(XMFLOAT2(100, hei)); + screenSpaceShadowsRangeSlider.SetSize(XMFLOAT2(mod_wid, hei)); screenSpaceShadowsRangeSlider.SetPos(XMFLOAT2(x + 100, y)); screenSpaceShadowsRangeSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowRange()); screenSpaceShadowsRangeSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -166,7 +168,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) screenSpaceShadowsStepCountSlider.Create(4, 128, 16, 128 - 4, "Sample Count: "); screenSpaceShadowsStepCountSlider.SetTooltip("Sample count of contact shadows. Higher values are better quality but slower."); - screenSpaceShadowsStepCountSlider.SetSize(XMFLOAT2(100, hei)); + screenSpaceShadowsStepCountSlider.SetSize(XMFLOAT2(mod_wid, hei)); screenSpaceShadowsStepCountSlider.SetPos(XMFLOAT2(x + 100, y += step)); screenSpaceShadowsStepCountSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowSampleCount()); screenSpaceShadowsStepCountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -186,7 +188,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) eyeAdaptionKeySlider.Create(0.01f, 0.5f, 0.1f, 10000, "Key: "); eyeAdaptionKeySlider.SetTooltip("Set the key value for eye adaption."); - eyeAdaptionKeySlider.SetSize(XMFLOAT2(100, hei)); + eyeAdaptionKeySlider.SetSize(XMFLOAT2(mod_wid, hei)); eyeAdaptionKeySlider.SetPos(XMFLOAT2(x + 100, y)); eyeAdaptionKeySlider.SetValue(editor->renderPath->getEyeAdaptionKey()); eyeAdaptionKeySlider.OnSlide([=](wi::gui::EventArgs args) { @@ -196,7 +198,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) eyeAdaptionRateSlider.Create(0.01f, 4, 0.5f, 10000, "Rate: "); eyeAdaptionRateSlider.SetTooltip("Set the eye adaption rate (speed of adjustment)"); - eyeAdaptionRateSlider.SetSize(XMFLOAT2(100, hei)); + eyeAdaptionRateSlider.SetSize(XMFLOAT2(mod_wid, hei)); eyeAdaptionRateSlider.SetPos(XMFLOAT2(x + 100, y += step)); eyeAdaptionRateSlider.SetValue(editor->renderPath->getEyeAdaptionRate()); eyeAdaptionRateSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -218,7 +220,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) motionBlurStrengthSlider.Create(0.1f, 400, 100, 10000, "Strength: "); motionBlurStrengthSlider.SetTooltip("Set the camera shutter speed for motion blur (higher value means stronger blur)."); motionBlurStrengthSlider.SetScriptTip("RenderPath3D::SetMotionBlurStrength(float value)"); - motionBlurStrengthSlider.SetSize(XMFLOAT2(100, hei)); + motionBlurStrengthSlider.SetSize(XMFLOAT2(mod_wid, hei)); motionBlurStrengthSlider.SetPos(XMFLOAT2(x + 100, y)); motionBlurStrengthSlider.SetValue(editor->renderPath->getMotionBlurStrength()); motionBlurStrengthSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -240,7 +242,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) depthOfFieldScaleSlider.Create(1.0f, 20, 100, 1000, "Strength: "); depthOfFieldScaleSlider.SetTooltip("Set depth of field strength. This is used to scale the Camera's ApertureSize setting"); depthOfFieldScaleSlider.SetScriptTip("RenderPath3D::SetDepthOfFieldStrength(float value)"); - depthOfFieldScaleSlider.SetSize(XMFLOAT2(100, hei)); + depthOfFieldScaleSlider.SetSize(XMFLOAT2(mod_wid, hei)); depthOfFieldScaleSlider.SetPos(XMFLOAT2(x + 100, y)); depthOfFieldScaleSlider.SetValue(editor->renderPath->getDepthOfFieldStrength()); depthOfFieldScaleSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -261,7 +263,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) bloomStrengthSlider.Create(0.0f, 10, 1, 1000, "Threshold: "); bloomStrengthSlider.SetTooltip("Set bloom threshold. The values below this will not glow on the screen."); - bloomStrengthSlider.SetSize(XMFLOAT2(100, hei)); + bloomStrengthSlider.SetSize(XMFLOAT2(mod_wid, hei)); bloomStrengthSlider.SetPos(XMFLOAT2(x + 100, y)); bloomStrengthSlider.SetValue(editor->renderPath->getBloomThreshold()); bloomStrengthSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -314,7 +316,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) sharpenFilterAmountSlider.Create(0, 4, 1, 1000, "Amount: "); sharpenFilterAmountSlider.SetTooltip("Set sharpness filter strength."); sharpenFilterAmountSlider.SetScriptTip("RenderPath3D::SetSharpenFilterAmount(float value)"); - sharpenFilterAmountSlider.SetSize(XMFLOAT2(100, hei)); + sharpenFilterAmountSlider.SetSize(XMFLOAT2(mod_wid, hei)); sharpenFilterAmountSlider.SetPos(XMFLOAT2(x + 100, y)); sharpenFilterAmountSlider.SetValue(editor->renderPath->getSharpenFilterAmount()); sharpenFilterAmountSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -334,7 +336,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) outlineThresholdSlider.Create(0, 1, 0.1f, 1000, "Threshold: "); outlineThresholdSlider.SetTooltip("Outline edge detection threshold. Increase if not enough otlines are detected, decrease if too many outlines are detected."); - outlineThresholdSlider.SetSize(XMFLOAT2(100, hei)); + outlineThresholdSlider.SetSize(XMFLOAT2(mod_wid, hei)); outlineThresholdSlider.SetPos(XMFLOAT2(x + 100, y)); outlineThresholdSlider.SetValue(editor->renderPath->getOutlineThreshold()); outlineThresholdSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -344,7 +346,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) outlineThicknessSlider.Create(0, 4, 1, 1000, "Thickness: "); outlineThicknessSlider.SetTooltip("Set outline thickness."); - outlineThicknessSlider.SetSize(XMFLOAT2(100, hei)); + outlineThicknessSlider.SetSize(XMFLOAT2(mod_wid, hei)); outlineThicknessSlider.SetPos(XMFLOAT2(x + 100, y += step)); outlineThicknessSlider.SetValue(editor->renderPath->getOutlineThickness()); outlineThicknessSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -352,7 +354,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) }); AddWidget(&outlineThicknessSlider); - chromaticaberrationCheckBox.Create("Chromatic Aberration: "); + chromaticaberrationCheckBox.Create("Chromatic A.: "); chromaticaberrationCheckBox.SetTooltip("Toggle the full screen chromatic aberration effect. This simulates lens distortion at screen edges."); chromaticaberrationCheckBox.SetSize(XMFLOAT2(hei, hei)); chromaticaberrationCheckBox.SetPos(XMFLOAT2(x, y += step)); @@ -364,7 +366,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) chromaticaberrationSlider.Create(0, 4, 1.0f, 1000, "Amount: "); chromaticaberrationSlider.SetTooltip("The lens distortion amount."); - chromaticaberrationSlider.SetSize(XMFLOAT2(100, hei)); + chromaticaberrationSlider.SetSize(XMFLOAT2(mod_wid, hei)); chromaticaberrationSlider.SetPos(XMFLOAT2(x + 100, y)); chromaticaberrationSlider.SetValue(editor->renderPath->getChromaticAberrationAmount()); chromaticaberrationSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -384,7 +386,7 @@ void PostprocessWindow::Create(EditorComponent* _editor) fsrSlider.Create(0, 2, 1.0f, 1000, "Sharpness: "); fsrSlider.SetTooltip("The sharpening amount to apply for FSR upscaling."); - fsrSlider.SetSize(XMFLOAT2(100, hei)); + fsrSlider.SetSize(XMFLOAT2(mod_wid, hei)); fsrSlider.SetPos(XMFLOAT2(x + 100, y)); fsrSlider.SetValue(editor->renderPath->getFSRSharpness()); fsrSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -394,6 +396,6 @@ void PostprocessWindow::Create(EditorComponent* _editor) Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 500, 80, 0)); - SetVisible(false); + SetMinimized(true); } diff --git a/Editor/RendererWindow.cpp b/Editor/RendererWindow.cpp index 6f0e84360..517fa14a4 100644 --- a/Editor/RendererWindow.cpp +++ b/Editor/RendererWindow.cpp @@ -6,16 +6,19 @@ void RendererWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Renderer Window"); + wi::gui::Window::Create("Renderer", wi::gui::Window::WindowControls::COLLAPSE); wi::renderer::SetToDrawDebugEnvProbes(true); wi::renderer::SetToDrawGridHelper(true); wi::renderer::SetToDrawDebugCameras(true); - SetSize(XMFLOAT2(580, 400)); + SetSize(XMFLOAT2(580, 1120)); - float step = 20, itemheight = 18; - float x = 220, y = 0; + float step = 20; + float itemheight = 18; + float x = 160; + float y = 0; + float wid = 110; vsyncCheckBox.Create("VSync: "); vsyncCheckBox.SetTooltip("Toggle vertical sync"); @@ -29,7 +32,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&vsyncCheckBox); swapchainComboBox.Create("Swapchain format: "); - swapchainComboBox.SetSize(XMFLOAT2(100, itemheight)); + swapchainComboBox.SetSize(XMFLOAT2(wid, itemheight)); swapchainComboBox.SetPos(XMFLOAT2(x, y += step)); swapchainComboBox.SetTooltip("Choose between different display output formats.\nIf the display doesn't support the selected format, it will switch back to a reasonable default.\nHDR formats will be only selectable when the current display supports HDR output"); AddWidget(&swapchainComboBox); @@ -48,7 +51,7 @@ void RendererWindow::Create(EditorComponent* _editor) visibilityComputeShadingCheckBox.Create("VCS: "); visibilityComputeShadingCheckBox.SetTooltip("Visibility Compute Shading (experimental)\nThis will shade the scene in compute shaders instead of pixel shaders\nThis has a higher initial performance cost, but it will be faster in high polygon scenes"); - visibilityComputeShadingCheckBox.SetPos(XMFLOAT2(x + 120, y)); + visibilityComputeShadingCheckBox.SetPos(XMFLOAT2(x, y += step)); visibilityComputeShadingCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); visibilityComputeShadingCheckBox.OnClick([=](wi::gui::EventArgs args) { if (args.bValue) @@ -65,7 +68,7 @@ void RendererWindow::Create(EditorComponent* _editor) resolutionScaleSlider.Create(0.25f, 2.0f, 1.0f, 7.0f, "Resolution Scale: "); resolutionScaleSlider.SetTooltip("Adjust the internal rendering resolution."); - resolutionScaleSlider.SetSize(XMFLOAT2(100, itemheight)); + resolutionScaleSlider.SetSize(XMFLOAT2(wid, itemheight)); resolutionScaleSlider.SetPos(XMFLOAT2(x, y += step)); resolutionScaleSlider.SetValue(editor->resolutionScale); resolutionScaleSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -80,7 +83,7 @@ void RendererWindow::Create(EditorComponent* _editor) GIBoostSlider.Create(1, 10, 1.0f, 1000.0f, "GI Boost: "); GIBoostSlider.SetTooltip("Adjust the strength of GI.\nNote that values other than 1.0 will cause mismatch with path tracing reference!"); - GIBoostSlider.SetSize(XMFLOAT2(100, itemheight)); + GIBoostSlider.SetSize(XMFLOAT2(wid, itemheight)); GIBoostSlider.SetPos(XMFLOAT2(x, y += step)); GIBoostSlider.SetValue(wi::renderer::GetGIBoost()); GIBoostSlider.OnSlide([=](wi::gui::EventArgs args) { @@ -136,7 +139,7 @@ void RendererWindow::Create(EditorComponent* _editor) ddgiRayCountSlider.Create(32, DDGI_MAX_RAYCOUNT, 64, DDGI_MAX_RAYCOUNT - 32, "DDGI RayCount: "); ddgiRayCountSlider.SetTooltip("Adjust the ray count per DDGI probe."); - ddgiRayCountSlider.SetSize(XMFLOAT2(100, itemheight)); + ddgiRayCountSlider.SetSize(XMFLOAT2(wid, itemheight)); ddgiRayCountSlider.SetPos(XMFLOAT2(x, y += step)); ddgiRayCountSlider.SetValue((float)wi::renderer::GetDDGIRayCount()); ddgiRayCountSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -164,7 +167,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceDebugCheckBox.SetCheck(wi::renderer::GetToDrawVoxelHelper()); AddWidget(&voxelRadianceDebugCheckBox); - voxelRadianceSecondaryBounceCheckBox.Create("Secondary Light Bounce: "); + voxelRadianceSecondaryBounceCheckBox.Create("Voxel GI 2nd Bounce: "); voxelRadianceSecondaryBounceCheckBox.SetTooltip("Toggle secondary light bounce computation for Voxel GI."); voxelRadianceSecondaryBounceCheckBox.SetPos(XMFLOAT2(x, y += step)); voxelRadianceSecondaryBounceCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -186,7 +189,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceVoxelSizeSlider.Create(0.25, 2, 1, 7, "Voxel GI Voxel Size: "); voxelRadianceVoxelSizeSlider.SetTooltip("Adjust the voxel size for Voxel GI calculations."); - voxelRadianceVoxelSizeSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceVoxelSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceVoxelSizeSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceVoxelSizeSlider.SetValue(wi::renderer::GetVoxelRadianceVoxelSize()); voxelRadianceVoxelSizeSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -196,7 +199,7 @@ void RendererWindow::Create(EditorComponent* _editor) voxelRadianceConeTracingSlider.Create(1, 16, 8, 15, "Voxel GI NumCones: "); voxelRadianceConeTracingSlider.SetTooltip("Adjust the number of cones sampled in the radiance gathering phase."); - voxelRadianceConeTracingSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceConeTracingSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceConeTracingSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceConeTracingSlider.SetValue((float)wi::renderer::GetVoxelRadianceNumCones()); voxelRadianceConeTracingSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -204,9 +207,9 @@ void RendererWindow::Create(EditorComponent* _editor) }); AddWidget(&voxelRadianceConeTracingSlider); - voxelRadianceRayStepSizeSlider.Create(0.5f, 2.0f, 0.5f, 10000, "Voxel GI Ray Step Size: "); + voxelRadianceRayStepSizeSlider.Create(0.5f, 2.0f, 0.5f, 10000, "Voxel GI Ray Step: "); voxelRadianceRayStepSizeSlider.SetTooltip("Adjust the precision of ray marching for cone tracing step. Lower values = more precision but slower performance."); - voxelRadianceRayStepSizeSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceRayStepSizeSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceRayStepSizeSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceRayStepSizeSlider.SetValue(wi::renderer::GetVoxelRadianceRayStepSize()); voxelRadianceRayStepSizeSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -214,9 +217,9 @@ void RendererWindow::Create(EditorComponent* _editor) }); AddWidget(&voxelRadianceRayStepSizeSlider); - voxelRadianceMaxDistanceSlider.Create(0, 100, 10, 10000, "Voxel GI Max Distance: "); + voxelRadianceMaxDistanceSlider.Create(0, 100, 10, 10000, "Voxel GI Distance: "); voxelRadianceMaxDistanceSlider.SetTooltip("Adjust max raymarching distance for voxel GI."); - voxelRadianceMaxDistanceSlider.SetSize(XMFLOAT2(100, itemheight)); + voxelRadianceMaxDistanceSlider.SetSize(XMFLOAT2(wid, itemheight)); voxelRadianceMaxDistanceSlider.SetPos(XMFLOAT2(x, y += step)); voxelRadianceMaxDistanceSlider.SetValue(wi::renderer::GetVoxelRadianceMaxDistance()); voxelRadianceMaxDistanceSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -290,7 +293,7 @@ void RendererWindow::Create(EditorComponent* _editor) speedMultiplierSlider.Create(0, 4, 1, 100000, "Speed: "); speedMultiplierSlider.SetTooltip("Adjust the global speed (time multiplier)"); - speedMultiplierSlider.SetSize(XMFLOAT2(100, itemheight)); + speedMultiplierSlider.SetSize(XMFLOAT2(wid, itemheight)); speedMultiplierSlider.SetPos(XMFLOAT2(x, y += step)); speedMultiplierSlider.SetValue(wi::renderer::GetGameSpeed()); speedMultiplierSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -333,8 +336,8 @@ void RendererWindow::Create(EditorComponent* _editor) shadowTypeComboBox.SetTooltip("Choose between shadowmaps and ray traced shadows (if available).\n(ray traced shadows need hardware raytracing support)"); AddWidget(&shadowTypeComboBox); - shadowProps2DComboBox.Create("2D Shadowmap resolution: "); - shadowProps2DComboBox.SetSize(XMFLOAT2(100, itemheight)); + shadowProps2DComboBox.Create("2D Shadowmap res: "); + shadowProps2DComboBox.SetSize(XMFLOAT2(wid, itemheight)); shadowProps2DComboBox.SetPos(XMFLOAT2(x, y += step)); shadowProps2DComboBox.AddItem("Off"); shadowProps2DComboBox.AddItem("128"); @@ -377,8 +380,8 @@ void RendererWindow::Create(EditorComponent* _editor) shadowProps2DComboBox.SetScriptTip("SetShadowProps2D(int resolution, int count, int softShadowQuality)"); AddWidget(&shadowProps2DComboBox); - shadowPropsCubeComboBox.Create("Cube Shadowmap resolution: "); - shadowPropsCubeComboBox.SetSize(XMFLOAT2(100, itemheight)); + shadowPropsCubeComboBox.Create("Cube Shadowmap res: "); + shadowPropsCubeComboBox.SetSize(XMFLOAT2(wid, itemheight)); shadowPropsCubeComboBox.SetPos(XMFLOAT2(x, y += step)); shadowPropsCubeComboBox.AddItem("Off"); shadowPropsCubeComboBox.AddItem("128"); @@ -417,7 +420,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&shadowPropsCubeComboBox); MSAAComboBox.Create("MSAA: "); - MSAAComboBox.SetSize(XMFLOAT2(100, itemheight)); + MSAAComboBox.SetSize(XMFLOAT2(wid, itemheight)); MSAAComboBox.SetPos(XMFLOAT2(x, y += step)); MSAAComboBox.AddItem("Off"); MSAAComboBox.AddItem("2"); @@ -469,7 +472,7 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&temporalAADebugCheckBox); textureQualityComboBox.Create("Texture Quality: "); - textureQualityComboBox.SetSize(XMFLOAT2(100, itemheight)); + textureQualityComboBox.SetSize(XMFLOAT2(wid, itemheight)); textureQualityComboBox.SetPos(XMFLOAT2(x, y += step)); textureQualityComboBox.AddItem("Nearest"); textureQualityComboBox.AddItem("Bilinear"); @@ -505,7 +508,7 @@ void RendererWindow::Create(EditorComponent* _editor) mipLodBiasSlider.Create(-2, 2, 0, 100000, "MipLOD Bias: "); mipLodBiasSlider.SetTooltip("Bias the rendered mip map level of the material textures."); - mipLodBiasSlider.SetSize(XMFLOAT2(100, itemheight)); + mipLodBiasSlider.SetSize(XMFLOAT2(wid, itemheight)); mipLodBiasSlider.SetPos(XMFLOAT2(x, y += step)); mipLodBiasSlider.OnSlide([&](wi::gui::EventArgs args) { wi::graphics::SamplerDesc desc = wi::renderer::GetSampler(wi::enums::SAMPLER_OBJECTSHADER)->GetDesc(); @@ -516,7 +519,7 @@ void RendererWindow::Create(EditorComponent* _editor) raytraceBounceCountSlider.Create(1, 10, 1, 9, "Raytrace Bounces: "); raytraceBounceCountSlider.SetTooltip("How many light bounces to compute when doing ray tracing."); - raytraceBounceCountSlider.SetSize(XMFLOAT2(100, itemheight)); + raytraceBounceCountSlider.SetSize(XMFLOAT2(wid, itemheight)); raytraceBounceCountSlider.SetPos(XMFLOAT2(x, y += step)); raytraceBounceCountSlider.SetValue((float)wi::renderer::GetRaytraceBounceCount()); raytraceBounceCountSlider.OnSlide([&](wi::gui::EventArgs args) { @@ -527,11 +530,11 @@ void RendererWindow::Create(EditorComponent* _editor) // Visualizer toggles: - x = 540, y = 0; + y += step; nameDebugCheckBox.Create("Name visualizer: "); nameDebugCheckBox.SetTooltip("Visualize the entity names in the scene"); - nameDebugCheckBox.SetPos(XMFLOAT2(x, y)); + nameDebugCheckBox.SetPos(XMFLOAT2(x, y += step)); nameDebugCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); AddWidget(&nameDebugCheckBox); @@ -589,7 +592,7 @@ void RendererWindow::Create(EditorComponent* _editor) debugForceFieldsCheckBox.SetCheck(wi::renderer::GetToDrawDebugForceFields()); AddWidget(&debugForceFieldsCheckBox); - debugRaytraceBVHCheckBox.Create("Raytrace BVH visualizer: "); + debugRaytraceBVHCheckBox.Create("RT BVH visualizer: "); debugRaytraceBVHCheckBox.SetTooltip("Visualize scene BVH if raytracing is enabled"); debugRaytraceBVHCheckBox.SetPos(XMFLOAT2(x, y += step)); debugRaytraceBVHCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -609,7 +612,7 @@ void RendererWindow::Create(EditorComponent* _editor) envProbesCheckBox.SetCheck(wi::renderer::GetToDrawDebugEnvProbes()); AddWidget(&envProbesCheckBox); - cameraVisCheckBox.Create("Camera Proxy visualizer: "); + cameraVisCheckBox.Create("Camera visualizer: "); cameraVisCheckBox.SetTooltip("Toggle visualization of camera proxies in the scene"); cameraVisCheckBox.SetPos(XMFLOAT2(x, y += step)); cameraVisCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); @@ -630,9 +633,12 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&gridHelperCheckBox); + y += step; + + pickTypeObjectCheckBox.Create("Pick Objects: "); pickTypeObjectCheckBox.SetTooltip("Enable if you want to pick objects with the pointer"); - pickTypeObjectCheckBox.SetPos(XMFLOAT2(x, y += step * 2)); + pickTypeObjectCheckBox.SetPos(XMFLOAT2(x, y += step)); pickTypeObjectCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); pickTypeObjectCheckBox.SetCheck(true); AddWidget(&pickTypeObjectCheckBox); @@ -701,10 +707,12 @@ void RendererWindow::Create(EditorComponent* _editor) AddWidget(&pickTypeSoundCheckBox); + step++; + freezeCullingCameraCheckBox.Create("Freeze culling camera: "); freezeCullingCameraCheckBox.SetTooltip("Freeze culling camera update. Scene culling will not be updated with the view"); - freezeCullingCameraCheckBox.SetPos(XMFLOAT2(x, y += step * 2)); + freezeCullingCameraCheckBox.SetPos(XMFLOAT2(x, y += step)); freezeCullingCameraCheckBox.SetSize(XMFLOAT2(itemheight, itemheight)); freezeCullingCameraCheckBox.OnClick([](wi::gui::EventArgs args) { wi::renderer::SetFreezeCullingCameraEnabled(args.bValue); @@ -738,7 +746,7 @@ void RendererWindow::Create(EditorComponent* _editor) Translate(XMFLOAT3(100, 50, 0)); - SetVisible(false); + SetMinimized(true); } uint32_t RendererWindow::GetPickType() const diff --git a/Editor/SoundWindow.cpp b/Editor/SoundWindow.cpp index 591debca6..03a7bbb93 100644 --- a/Editor/SoundWindow.cpp +++ b/Editor/SoundWindow.cpp @@ -10,20 +10,164 @@ using namespace wi::scene; void SoundWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Sound Window"); + wi::gui::Window::Create(ICON_SOUND " Sound", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); SetSize(XMFLOAT2(440, 220)); - float x = 20; + closeButton.SetTooltip("Delete SoundComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().sounds.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 60; float y = 0; float hei = 18; float step = hei + 2; + float wid = 200; + + + openButton.Create("Open File"); + openButton.SetPos(XMFLOAT2(x, y)); + openButton.SetSize(XMFLOAT2(wid, hei)); + openButton.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Sound"; + params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + sound->filename = fileName; + sound->soundResource = wi::resourcemanager::Load(fileName, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + }); + }); + } + }); + AddWidget(&openButton); + + filenameLabel.Create("Filename"); + filenameLabel.SetPos(XMFLOAT2(x, y += step)); + filenameLabel.SetSize(XMFLOAT2(wid, hei)); + filenameLabel.font.params.h_align = wi::font::WIFALIGN_RIGHT; + AddWidget(&filenameLabel); + + playstopButton.Create("Play"); + playstopButton.SetTooltip("Play/Stop selected sound instance."); + playstopButton.SetPos(XMFLOAT2(x, y += step)); + playstopButton.SetSize(XMFLOAT2(wid, hei)); + playstopButton.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + if (sound->IsPlaying()) + { + sound->Stop(); + playstopButton.SetText("Play"); + } + else + { + sound->Play(); + playstopButton.SetText("Stop"); + } + } + }); + AddWidget(&playstopButton); + playstopButton.SetEnabled(false); + + loopedCheckbox.Create("Looped: "); + loopedCheckbox.SetTooltip("Enable looping for the selected sound instance."); + loopedCheckbox.SetPos(XMFLOAT2(x, y += step)); + loopedCheckbox.SetSize(XMFLOAT2(hei, hei)); + loopedCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->SetLooped(args.bValue); + } + }); + AddWidget(&loopedCheckbox); + loopedCheckbox.SetEnabled(false); + + reverbCheckbox.Create("Reverb: "); + reverbCheckbox.SetTooltip("Enable/disable reverb."); + reverbCheckbox.SetPos(XMFLOAT2(x, y += step)); + reverbCheckbox.SetSize(XMFLOAT2(hei, hei)); + reverbCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->soundinstance.SetEnableReverb(args.bValue); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + AddWidget(&reverbCheckbox); + reverbCheckbox.SetEnabled(false); + + disable3dCheckbox.Create("2D: "); + disable3dCheckbox.SetTooltip("Sounds in the scene are 3D spatial by default. Select this to disable 3D effect."); + disable3dCheckbox.SetPos(XMFLOAT2(x, y += step)); + disable3dCheckbox.SetSize(XMFLOAT2(hei, hei)); + disable3dCheckbox.OnClick([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->SetDisable3D(args.bValue); + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + AddWidget(&disable3dCheckbox); + loopedCheckbox.SetEnabled(false); + + volumeSlider.Create(0, 1, 1, 1000, "Volume: "); + volumeSlider.SetTooltip("Set volume level for the selected sound instance."); + volumeSlider.SetPos(XMFLOAT2(x, y += step)); + volumeSlider.SetSize(XMFLOAT2(wid, hei)); + volumeSlider.OnSlide([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->volume = args.fValue; + } + }); + AddWidget(&volumeSlider); + volumeSlider.SetEnabled(false); + + submixComboBox.Create("Submix: "); + submixComboBox.SetPos(XMFLOAT2(x, y += step)); + submixComboBox.SetSize(XMFLOAT2(wid, hei)); + submixComboBox.OnSelect([&](wi::gui::EventArgs args) { + SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); + if (sound != nullptr) + { + sound->soundinstance.type = (wi::audio::SUBMIX_TYPE)args.iValue; + wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); + } + }); + submixComboBox.AddItem("SOUNDEFFECT"); + submixComboBox.AddItem("MUSIC"); + submixComboBox.AddItem("USER0"); + submixComboBox.AddItem("USER1"); + submixComboBox.SetTooltip("Set the submix channel of the sound. \nSound properties like volume can be set per sound, or per submix channel."); + submixComboBox.SetScriptTip("SoundInstance::SetSubmixType(int submixType)"); + AddWidget(&submixComboBox); reverbComboBox.Create("Reverb: "); - reverbComboBox.SetPos(XMFLOAT2(x + 80, y)); - reverbComboBox.SetSize(XMFLOAT2(180, hei)); + reverbComboBox.SetPos(XMFLOAT2(x, y += step)); + reverbComboBox.SetSize(XMFLOAT2(wid, hei)); reverbComboBox.OnSelect([&](wi::gui::EventArgs args) { wi::audio::SetReverb((wi::audio::REVERB_PRESET)args.iValue); - }); + }); reverbComboBox.AddItem("DEFAULT"); reverbComboBox.AddItem("GENERIC"); reverbComboBox.AddItem("FOREST"); @@ -57,161 +201,8 @@ void SoundWindow::Create(EditorComponent* _editor) reverbComboBox.SetTooltip("Set the global reverb setting. Sound instances need to enable reverb to take effect!"); AddWidget(&reverbComboBox); - y += step; - addButton.Create("Add Sound"); - addButton.SetTooltip("Add a sound file to the scene."); - addButton.SetPos(XMFLOAT2(x, y += step)); - addButton.SetSize(XMFLOAT2(80, hei)); - addButton.OnClick([=](wi::gui::EventArgs args) { - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = "Sound"; - params.extensions = wi::resourcemanager::GetSupportedSoundExtensions(); - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - Entity entity = editor->GetCurrentScene().Entity_CreateSound("editorSound", fileName); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - }); - }); - AddWidget(&addButton); - - filenameLabel.Create("Filename"); - filenameLabel.SetPos(XMFLOAT2(x, y += step)); - filenameLabel.SetSize(XMFLOAT2(400, hei)); - AddWidget(&filenameLabel); - - nameField.Create("SoundName"); - nameField.SetTooltip("Enter a sound name to identify this entity..."); - nameField.SetPos(XMFLOAT2(x, y += step)); - nameField.SetSize(XMFLOAT2(300, hei)); - nameField.OnInputAccepted([=](wi::gui::EventArgs args) { - NameComponent* name = editor->GetCurrentScene().names.GetComponent(entity); - if (name == nullptr) - { - name = &editor->GetCurrentScene().names.Create(entity); - } - *name = args.sValue; - - editor->RefreshEntityTree(); - }); - AddWidget(&nameField); - nameField.SetEnabled(false); - - playstopButton.Create("Play"); - playstopButton.SetTooltip("Play/Stop selected sound instance."); - playstopButton.SetPos(XMFLOAT2(x, y += step)); - playstopButton.SetSize(XMFLOAT2(80, hei)); - playstopButton.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - if (sound->IsPlaying()) - { - sound->Stop(); - playstopButton.SetText("Play"); - } - else - { - sound->Play(); - playstopButton.SetText("Stop"); - } - } - }); - AddWidget(&playstopButton); - playstopButton.SetEnabled(false); - - loopedCheckbox.Create("Looped: "); - loopedCheckbox.SetTooltip("Enable looping for the selected sound instance."); - loopedCheckbox.SetPos(XMFLOAT2(x + 150, y)); - loopedCheckbox.SetSize(XMFLOAT2(hei, hei)); - loopedCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->SetLooped(args.bValue); - } - }); - AddWidget(&loopedCheckbox); - loopedCheckbox.SetEnabled(false); - - reverbCheckbox.Create("Reverb: "); - reverbCheckbox.SetTooltip("Enable/disable reverb."); - reverbCheckbox.SetPos(XMFLOAT2(x + 240, y)); - reverbCheckbox.SetSize(XMFLOAT2(hei, hei)); - reverbCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->soundinstance.SetEnableReverb(args.bValue); - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - AddWidget(&reverbCheckbox); - reverbCheckbox.SetEnabled(false); - - disable3dCheckbox.Create("2D: "); - disable3dCheckbox.SetTooltip("Sounds in the scene are 3D spatial by default. Select this to disable 3D effect."); - disable3dCheckbox.SetPos(XMFLOAT2(x + 300, y)); - disable3dCheckbox.SetSize(XMFLOAT2(hei, hei)); - disable3dCheckbox.OnClick([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->SetDisable3D(args.bValue); - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - AddWidget(&disable3dCheckbox); - loopedCheckbox.SetEnabled(false); - - volumeSlider.Create(0, 1, 1, 1000, "Volume: "); - volumeSlider.SetTooltip("Set volume level for the selected sound instance."); - volumeSlider.SetPos(XMFLOAT2(x + 60, y += step)); - volumeSlider.SetSize(XMFLOAT2(240, hei)); - volumeSlider.OnSlide([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->volume = args.fValue; - } - }); - AddWidget(&volumeSlider); - volumeSlider.SetEnabled(false); - - submixComboBox.Create("Submix: "); - submixComboBox.SetPos(XMFLOAT2(x + 80, y += step)); - submixComboBox.SetSize(XMFLOAT2(180, hei)); - submixComboBox.OnSelect([&](wi::gui::EventArgs args) { - SoundComponent* sound = editor->GetCurrentScene().sounds.GetComponent(entity); - if (sound != nullptr) - { - sound->soundinstance.type = (wi::audio::SUBMIX_TYPE)args.iValue; - wi::audio::CreateSoundInstance(&sound->soundResource.GetSound(), &sound->soundinstance); - } - }); - submixComboBox.AddItem("SOUNDEFFECT"); - submixComboBox.AddItem("MUSIC"); - submixComboBox.AddItem("USER0"); - submixComboBox.AddItem("USER1"); - submixComboBox.SetTooltip("Set the submix channel of the sound. \nSound properties like volume can be set per sound, or per submix channel."); - submixComboBox.SetScriptTip("SoundInstance::SetSubmixType(int submixType)"); - AddWidget(&submixComboBox); - - Translate(XMFLOAT3(400, 120, 0)); + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -230,15 +221,6 @@ void SoundWindow::SetEntity(Entity entity) if (sound != nullptr) { filenameLabel.SetText(sound->filename); - if (name == nullptr) - { - nameField.SetText("Enter a sound name..."); - } - else - { - nameField.SetText(name->name); - } - nameField.SetEnabled(true); playstopButton.SetEnabled(true); loopedCheckbox.SetEnabled(true); loopedCheckbox.SetCheck(sound->IsLooped()); @@ -265,8 +247,6 @@ void SoundWindow::SetEntity(Entity entity) else { filenameLabel.SetText(""); - nameField.SetText(""); - nameField.SetEnabled(false); playstopButton.SetEnabled(false); loopedCheckbox.SetEnabled(false); reverbCheckbox.SetEnabled(false); diff --git a/Editor/SoundWindow.h b/Editor/SoundWindow.h index 137aa85ee..81557a37b 100644 --- a/Editor/SoundWindow.h +++ b/Editor/SoundWindow.h @@ -12,10 +12,9 @@ public: wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; void SetEntity(wi::ecs::Entity entity); + wi::gui::Button openButton; wi::gui::ComboBox reverbComboBox; - wi::gui::Button addButton; wi::gui::Label filenameLabel; - wi::gui::TextInputField nameField; wi::gui::Button playstopButton; wi::gui::CheckBox loopedCheckbox; wi::gui::CheckBox reverbCheckbox; diff --git a/Editor/SpringWindow.cpp b/Editor/SpringWindow.cpp index 8f3d53f67..130a1d76f 100644 --- a/Editor/SpringWindow.cpp +++ b/Editor/SpringWindow.cpp @@ -9,24 +9,32 @@ using namespace wi::scene; void SpringWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Spring Window"); - SetSize(XMFLOAT2(460, 200)); + wi::gui::Window::Create("Spring", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(460, 180)); - float x = 150; + closeButton.SetTooltip("Delete SpringComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().springs.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 120; float y = 0; - float siz = 200; + float siz = 140; float hei = 18; float step = hei + 2; - createButton.Create("Create"); - createButton.SetTooltip("Create/Remove Spring Component to selected entity"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(siz, hei)); - AddWidget(&createButton); - debugCheckBox.Create("DEBUG: "); debugCheckBox.SetTooltip("Enabling this will visualize springs as small yellow X-es in the scene"); - debugCheckBox.SetPos(XMFLOAT2(x, y += step)); + debugCheckBox.SetPos(XMFLOAT2(x, y)); debugCheckBox.SetSize(XMFLOAT2(hei, hei)); AddWidget(&debugCheckBox); @@ -84,7 +92,8 @@ void SpringWindow::Create(EditorComponent* _editor) }); AddWidget(&windSlider); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 700, 80, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -112,28 +121,5 @@ void SpringWindow::SetEntity(Entity entity) SetEnabled(false); } - const TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - createButton.SetEnabled(true); - - if (spring == nullptr) - { - createButton.SetText("Create"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().springs.Create(entity); - SetEntity(entity); - }); - } - else - { - createButton.SetText("Remove"); - createButton.OnClick([=](wi::gui::EventArgs args) { - editor->GetCurrentScene().springs.Remove_KeepSorted(entity); - SetEntity(entity); - }); - } - } - debugCheckBox.SetEnabled(true); } diff --git a/Editor/SpringWindow.h b/Editor/SpringWindow.h index 00f828367..9d7cfc3fa 100644 --- a/Editor/SpringWindow.h +++ b/Editor/SpringWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::CheckBox debugCheckBox; wi::gui::CheckBox disabledCheckBox; wi::gui::CheckBox stretchCheckBox; diff --git a/Editor/TerrainGenerator.cpp b/Editor/TerrainGenerator.cpp index 4e8237f08..5fe097916 100644 --- a/Editor/TerrainGenerator.cpp +++ b/Editor/TerrainGenerator.cpp @@ -15,6 +15,403 @@ enum PRESET PRESET_ARCTIC, }; +void TerrainGenerator::Create() +{ + RemoveWidgets(); + ClearTransform(); + + wi::gui::Window::Create("Terrain Generator", wi::gui::Window::WindowControls::COLLAPSE); + SetSize(XMFLOAT2(420, 750)); + + float x = 140; + float y = 0; + float step = 25; + float hei = 20; + float wid = 120; + + centerToCamCheckBox.Create("Center to Cam: "); + centerToCamCheckBox.SetTooltip("Automatically generate chunks around camera. This sets the center chunk to camera position."); + centerToCamCheckBox.SetSize(XMFLOAT2(hei, hei)); + centerToCamCheckBox.SetPos(XMFLOAT2(x, y)); + centerToCamCheckBox.SetCheck(true); + AddWidget(¢erToCamCheckBox); + + removalCheckBox.Create("Removal: "); + removalCheckBox.SetTooltip("Automatically remove chunks that are farther than generation distance around center chunk."); + removalCheckBox.SetSize(XMFLOAT2(hei, hei)); + removalCheckBox.SetPos(XMFLOAT2(x + 100, y)); + removalCheckBox.SetCheck(true); + AddWidget(&removalCheckBox); + + grassCheckBox.Create("Grass: "); + grassCheckBox.SetTooltip("Specify whether grass generation is enabled."); + grassCheckBox.SetSize(XMFLOAT2(hei, hei)); + grassCheckBox.SetPos(XMFLOAT2(x, y += step)); + grassCheckBox.SetCheck(true); + AddWidget(&grassCheckBox); + + lodSlider.Create(0.0001f, 0.01f, 0.005f, 10000, "Mesh LOD Distance: "); + lodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); + lodSlider.SetSize(XMFLOAT2(wid, hei)); + lodSlider.SetPos(XMFLOAT2(x, y += step)); + lodSlider.OnSlide([this](wi::gui::EventArgs args) { + for (auto& it : chunks) + { + const ChunkData& chunk_data = it.second; + if (chunk_data.entity != INVALID_ENTITY) + { + ObjectComponent* object = scene->objects.GetComponent(chunk_data.entity); + if (object != nullptr) + { + object->lod_distance_multiplier = args.fValue; + } + } + } + }); + AddWidget(&lodSlider); + + texlodSlider.Create(0.001f, 0.05f, 0.01f, 10000, "Tex LOD Distance: "); + texlodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier for virtual textures.\nLow values increase LOD detail in distance"); + texlodSlider.SetSize(XMFLOAT2(wid, hei)); + texlodSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&texlodSlider); + + generationSlider.Create(0, 16, 12, 16, "Generation Distance: "); + generationSlider.SetTooltip("How far out chunks will be generated (value is in number of chunks)"); + generationSlider.SetSize(XMFLOAT2(wid, hei)); + generationSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&generationSlider); + + propSlider.Create(0, 16, 10, 16, "Prop Distance: "); + propSlider.SetTooltip("How far out props will be generated (value is in number of chunks)"); + propSlider.SetSize(XMFLOAT2(wid, hei)); + propSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&propSlider); + + propDensitySlider.Create(0, 10, 1, 1000, "Prop Density: "); + propDensitySlider.SetTooltip("Modifies overall prop density."); + propDensitySlider.SetSize(XMFLOAT2(wid, hei)); + propDensitySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&propDensitySlider); + + grassDensitySlider.Create(0, 4, 1, 1000, "Grass Density: "); + grassDensitySlider.SetTooltip("Modifies overall grass density."); + grassDensitySlider.SetSize(XMFLOAT2(wid, hei)); + grassDensitySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&grassDensitySlider); + + presetCombo.Create("Preset: "); + presetCombo.SetTooltip("Select a terrain preset"); + presetCombo.SetSize(XMFLOAT2(wid, hei)); + presetCombo.SetPos(XMFLOAT2(x, y += step)); + presetCombo.AddItem("Hills", PRESET_HILLS); + presetCombo.AddItem("Islands", PRESET_ISLANDS); + presetCombo.AddItem("Mountains", PRESET_MOUNTAINS); + presetCombo.AddItem("Arctic", PRESET_ARCTIC); + presetCombo.OnSelect([=](wi::gui::EventArgs args) { + switch (args.userdata) + { + default: + case PRESET_HILLS: + seedSlider.SetValue(5333); + bottomLevelSlider.SetValue(-60); + topLevelSlider.SetValue(380); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.0008f); + perlinOctavesSlider.SetValue(6); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.001f); + voronoiFadeSlider.SetValue(2.59f); + voronoiShapeSlider.SetValue(0.7f); + voronoiFalloffSlider.SetValue(6); + voronoiPerturbationSlider.SetValue(0.1f); + region1Slider.SetValue(1); + region2Slider.SetValue(2); + region3Slider.SetValue(8); + break; + case PRESET_ISLANDS: + seedSlider.SetValue(4691); + bottomLevelSlider.SetValue(-79); + topLevelSlider.SetValue(520); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.000991f); + perlinOctavesSlider.SetValue(6); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.000317f); + voronoiFadeSlider.SetValue(8.2f); + voronoiShapeSlider.SetValue(0.126f); + voronoiFalloffSlider.SetValue(1.392f); + voronoiPerturbationSlider.SetValue(0.126f); + region1Slider.SetValue(8); + region2Slider.SetValue(0.7f); + region3Slider.SetValue(8); + break; + case PRESET_MOUNTAINS: + seedSlider.SetValue(8863); + bottomLevelSlider.SetValue(0); + topLevelSlider.SetValue(2960); + perlinBlendSlider.SetValue(0.5f); + perlinFrequencySlider.SetValue(0.00279f); + perlinOctavesSlider.SetValue(8); + voronoiBlendSlider.SetValue(0.5f); + voronoiFrequencySlider.SetValue(0.000496f); + voronoiFadeSlider.SetValue(5.2f); + voronoiShapeSlider.SetValue(0.412f); + voronoiFalloffSlider.SetValue(1.456f); + voronoiPerturbationSlider.SetValue(0.092f); + region1Slider.SetValue(1); + region2Slider.SetValue(1); + region3Slider.SetValue(0.8f); + break; + case PRESET_ARCTIC: + seedSlider.SetValue(2124); + bottomLevelSlider.SetValue(-50); + topLevelSlider.SetValue(40); + perlinBlendSlider.SetValue(1); + perlinFrequencySlider.SetValue(0.002f); + perlinOctavesSlider.SetValue(4); + voronoiBlendSlider.SetValue(1); + voronoiFrequencySlider.SetValue(0.004f); + voronoiFadeSlider.SetValue(1.8f); + voronoiShapeSlider.SetValue(0.518f); + voronoiFalloffSlider.SetValue(0.2f); + voronoiPerturbationSlider.SetValue(0.298f); + region1Slider.SetValue(8); + region2Slider.SetValue(8); + region3Slider.SetValue(0); + break; + } + Generation_Restart(); + }); + AddWidget(&presetCombo); + + scaleSlider.Create(1, 10, 1, 9, "Chunk Scale: "); + scaleSlider.SetTooltip("Size of one chunk in horizontal directions.\nLarger chunk scale will cover larger distance, but will have less detail per unit."); + scaleSlider.SetSize(XMFLOAT2(wid, hei)); + scaleSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&scaleSlider); + + seedSlider.Create(1, 12345, 3926, 12344, "Seed: "); + seedSlider.SetTooltip("Seed for terrain randomness"); + seedSlider.SetSize(XMFLOAT2(wid, hei)); + seedSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&seedSlider); + + bottomLevelSlider.Create(-100, 0, -60, 10000, "Bottom Level: "); + bottomLevelSlider.SetTooltip("Terrain mesh grid lowest level"); + bottomLevelSlider.SetSize(XMFLOAT2(wid, hei)); + bottomLevelSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&bottomLevelSlider); + + topLevelSlider.Create(0, 5000, 380, 10000, "Top Level: "); + topLevelSlider.SetTooltip("Terrain mesh grid topmost level"); + topLevelSlider.SetSize(XMFLOAT2(wid, hei)); + topLevelSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&topLevelSlider); + + perlinBlendSlider.Create(0, 1, 0.5f, 10000, "Perlin Blend: "); + perlinBlendSlider.SetTooltip("Amount of perlin noise to use"); + perlinBlendSlider.SetSize(XMFLOAT2(wid, hei)); + perlinBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinBlendSlider); + + perlinFrequencySlider.Create(0.0001f, 0.01f, 0.0008f, 10000, "Perlin Frequency: "); + perlinFrequencySlider.SetTooltip("Frequency for the perlin noise"); + perlinFrequencySlider.SetSize(XMFLOAT2(wid, hei)); + perlinFrequencySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinFrequencySlider); + + perlinOctavesSlider.Create(1, 8, 6, 7, "Perlin Octaves: "); + perlinOctavesSlider.SetTooltip("Octave count for the perlin noise"); + perlinOctavesSlider.SetSize(XMFLOAT2(wid, hei)); + perlinOctavesSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&perlinOctavesSlider); + + voronoiBlendSlider.Create(0, 1, 0.5f, 10000, "Voronoi Blend: "); + voronoiBlendSlider.SetTooltip("Amount of voronoi to use for elevation"); + voronoiBlendSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiBlendSlider); + + voronoiFrequencySlider.Create(0.0001f, 0.01f, 0.001f, 10000, "Voronoi Frequency: "); + voronoiFrequencySlider.SetTooltip("Voronoi can create distinctly elevated areas, the more cells there are, smaller the consecutive areas"); + voronoiFrequencySlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFrequencySlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFrequencySlider); + + voronoiFadeSlider.Create(0, 100, 2.59f, 10000, "Voronoi Fade: "); + voronoiFadeSlider.SetTooltip("Fade out voronoi regions by distance from cell's center"); + voronoiFadeSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFadeSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFadeSlider); + + voronoiShapeSlider.Create(0, 1, 0.7f, 10000, "Voronoi Shape: "); + voronoiShapeSlider.SetTooltip("How much the voronoi shape will be kept"); + voronoiShapeSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiShapeSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiShapeSlider); + + voronoiFalloffSlider.Create(0, 8, 6, 10000, "Voronoi Falloff: "); + voronoiFalloffSlider.SetTooltip("Controls the falloff of the voronoi distance fade effect"); + voronoiFalloffSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiFalloffSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiFalloffSlider); + + voronoiPerturbationSlider.Create(0, 1, 0.1f, 10000, "Voronoi Perturbation: "); + voronoiPerturbationSlider.SetTooltip("Controls the random look of voronoi region edges"); + voronoiPerturbationSlider.SetSize(XMFLOAT2(wid, hei)); + voronoiPerturbationSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&voronoiPerturbationSlider); + + saveHeightmapButton.Create("Save Heightmap..."); + saveHeightmapButton.SetTooltip("Save a heightmap texture from the currently generated terrain, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be normalized into 8bit PNG format which can result in precision loss!"); + saveHeightmapButton.SetSize(XMFLOAT2(wid, hei)); + saveHeightmapButton.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&saveHeightmapButton); + + heightmapButton.Create("Load Heightmap..."); + heightmapButton.SetTooltip("Load a heightmap texture, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be placed in the world center."); + heightmapButton.SetSize(XMFLOAT2(wid, hei)); + heightmapButton.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&heightmapButton); + + heightmapBlendSlider.Create(0, 1, 1, 10000, "Heightmap Blend: "); + heightmapBlendSlider.SetTooltip("Amount of displacement coming from the heightmap texture"); + heightmapBlendSlider.SetSize(XMFLOAT2(wid, hei)); + heightmapBlendSlider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(&heightmapBlendSlider); + + region1Slider.Create(0, 8, 1, 10000, "Slope Region: "); + region1Slider.SetTooltip("The region's falloff power"); + region1Slider.SetSize(XMFLOAT2(wid, hei)); + region1Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion1Slider); + + region2Slider.Create(0, 8, 2, 10000, "Low Altitude Region: "); + region2Slider.SetTooltip("The region's falloff power"); + region2Slider.SetSize(XMFLOAT2(wid, hei)); + region2Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion2Slider); + + region3Slider.Create(0, 8, 8, 10000, "High Altitude Region: "); + region3Slider.SetTooltip("The region's falloff power"); + region3Slider.SetSize(XMFLOAT2(wid, hei)); + region3Slider.SetPos(XMFLOAT2(x, y += step)); + AddWidget(®ion3Slider); + + + auto generate_callback = [=](wi::gui::EventArgs args) { + Generation_Restart(); + }; + scaleSlider.OnSlide(generate_callback); + seedSlider.OnSlide(generate_callback); + bottomLevelSlider.OnSlide(generate_callback); + topLevelSlider.OnSlide(generate_callback); + perlinFrequencySlider.OnSlide(generate_callback); + perlinBlendSlider.OnSlide(generate_callback); + perlinOctavesSlider.OnSlide(generate_callback); + voronoiBlendSlider.OnSlide(generate_callback); + voronoiFrequencySlider.OnSlide(generate_callback); + voronoiFadeSlider.OnSlide(generate_callback); + voronoiShapeSlider.OnSlide(generate_callback); + voronoiFalloffSlider.OnSlide(generate_callback); + voronoiPerturbationSlider.OnSlide(generate_callback); + heightmapBlendSlider.OnSlide(generate_callback); + region1Slider.OnSlide(generate_callback); + region2Slider.OnSlide(generate_callback); + region3Slider.OnSlide(generate_callback); + + saveHeightmapButton.OnClick([=](wi::gui::EventArgs args) { + + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::SAVE; + params.description = "PNG"; + params.extensions = { "PNG" }; + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + wi::primitive::AABB aabb; + for (auto& chunk : chunks) + { + const wi::primitive::AABB* object_aabb = scene->aabb_objects.GetComponent(chunk.second.entity); + if (object_aabb != nullptr) + { + aabb = wi::primitive::AABB::Merge(aabb, *object_aabb); + } + } + + HeightmapTexture saved_heightmap; + saved_heightmap.width = int(aabb.getHalfWidth().x * 2 + 1); + saved_heightmap.height = int(aabb.getHalfWidth().z * 2 + 1); + saved_heightmap.data.resize(saved_heightmap.width * saved_heightmap.height); + std::fill(saved_heightmap.data.begin(), saved_heightmap.data.end(), 0u); + + for (auto& chunk : chunks) + { + const ObjectComponent* object = scene->objects.GetComponent(chunk.second.entity); + if (object != nullptr) + { + const MeshComponent* mesh = scene->meshes.GetComponent(object->meshID); + if (mesh != nullptr) + { + const XMMATRIX W = XMLoadFloat4x4(&object->worldMatrix); + for (auto& x : mesh->vertex_positions) + { + XMVECTOR P = XMLoadFloat3(&x); + P = XMVector3Transform(P, W); + XMFLOAT3 p; + XMStoreFloat3(&p, P); + p.x -= aabb._min.x; + p.z -= aabb._min.z; + int coord = int(p.x) + int(p.z) * saved_heightmap.width; + saved_heightmap.data[coord] = uint8_t(wi::math::InverseLerp(aabb._min.y, aabb._max.y, p.y) * 255u); + } + } + } + } + + wi::graphics::TextureDesc desc; + desc.width = uint32_t(saved_heightmap.width); + desc.height = uint32_t(saved_heightmap.height); + desc.format = wi::graphics::Format::R8_UNORM; + bool success = wi::helper::saveTextureToFile(saved_heightmap.data, desc, wi::helper::ReplaceExtension(fileName, "PNG")); + assert(success); + + }); + }); + }); + + heightmapButton.OnClick([=](wi::gui::EventArgs args) { + + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Texture"; + params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); + wi::helper::FileDialog(params, [=](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + + heightmap = {}; + int bpp = 0; + stbi_uc* rgba = stbi_load(fileName.c_str(), &heightmap.width, &heightmap.height, &bpp, 1); + if (rgba != nullptr) + { + heightmap.data.resize(heightmap.width * heightmap.height); + for (int i = 0; i < heightmap.width * heightmap.height; ++i) + { + heightmap.data[i] = rgba[i]; + } + stbi_image_free(rgba); + Generation_Restart(); + } + }); + }); + }); + + heightmap = {}; + + SetCollapsed(true); +} + void TerrainGenerator::init() { terrainEntity = CreateEntity(); @@ -158,401 +555,6 @@ void TerrainGenerator::init() lods[lod].indexCount = (uint32_t)indices.size() - lods[lod].indexOffset; } - RemoveWidgets(); - ClearTransform(); - - wi::gui::Window::Create("TerraGen (Preview version)"); - SetSize(XMFLOAT2(420, 300)); - - float x = 160; - float y = 0; - float step = 25; - float hei = 20; - - centerToCamCheckBox.Create("Center to Cam: "); - centerToCamCheckBox.SetTooltip("Automatically generate chunks around camera. This sets the center chunk to camera position."); - centerToCamCheckBox.SetSize(XMFLOAT2(hei, hei)); - centerToCamCheckBox.SetPos(XMFLOAT2(x, y)); - centerToCamCheckBox.SetCheck(true); - AddWidget(¢erToCamCheckBox); - - removalCheckBox.Create("Removal: "); - removalCheckBox.SetTooltip("Automatically remove chunks that are farther than generation distance around center chunk."); - removalCheckBox.SetSize(XMFLOAT2(hei, hei)); - removalCheckBox.SetPos(XMFLOAT2(x + 100, y)); - removalCheckBox.SetCheck(true); - AddWidget(&removalCheckBox); - - grassCheckBox.Create("Grass: "); - grassCheckBox.SetTooltip("Specify whether grass generation is enabled."); - grassCheckBox.SetSize(XMFLOAT2(hei, hei)); - grassCheckBox.SetPos(XMFLOAT2(x + 200, y)); - grassCheckBox.SetCheck(true); - AddWidget(&grassCheckBox); - - lodSlider.Create(0.0001f, 0.01f, 0.005f, 10000, "Mesh LOD Distance: "); - lodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); - lodSlider.SetSize(XMFLOAT2(200, hei)); - lodSlider.SetPos(XMFLOAT2(x, y += step)); - lodSlider.OnSlide([this](wi::gui::EventArgs args) { - for (auto& it : chunks) - { - const ChunkData& chunk_data = it.second; - if (chunk_data.entity != INVALID_ENTITY) - { - ObjectComponent* object = scene->objects.GetComponent(chunk_data.entity); - if (object != nullptr) - { - object->lod_distance_multiplier = args.fValue; - } - } - } - }); - AddWidget(&lodSlider); - - texlodSlider.Create(0.001f, 0.05f, 0.01f, 10000, "Texture LOD Distance: "); - texlodSlider.SetTooltip("Set the LOD (Level Of Detail) distance multiplier.\nLow values increase LOD detail in distance"); - texlodSlider.SetSize(XMFLOAT2(200, hei)); - texlodSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&texlodSlider); - - generationSlider.Create(0, 16, 12, 16, "Generation Distance: "); - generationSlider.SetTooltip("How far out chunks will be generated (value is in number of chunks)"); - generationSlider.SetSize(XMFLOAT2(200, hei)); - generationSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&generationSlider); - - propSlider.Create(0, 16, 10, 16, "Prop Distance: "); - propSlider.SetTooltip("How far out props will be generated (value is in number of chunks)"); - propSlider.SetSize(XMFLOAT2(200, hei)); - propSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&propSlider); - - propDensitySlider.Create(0, 10, 1, 1000, "Prop Density: "); - propDensitySlider.SetTooltip("Modifies overall prop density."); - propDensitySlider.SetSize(XMFLOAT2(200, hei)); - propDensitySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&propDensitySlider); - - grassDensitySlider.Create(0, 4, 1, 1000, "Grass Density: "); - grassDensitySlider.SetTooltip("Modifies overall grass density."); - grassDensitySlider.SetSize(XMFLOAT2(200, hei)); - grassDensitySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&grassDensitySlider); - - presetCombo.Create("Preset: "); - presetCombo.SetTooltip("Select a terrain preset"); - presetCombo.SetSize(XMFLOAT2(200, hei)); - presetCombo.SetPos(XMFLOAT2(x, y += step)); - presetCombo.AddItem("Hills", PRESET_HILLS); - presetCombo.AddItem("Islands", PRESET_ISLANDS); - presetCombo.AddItem("Mountains", PRESET_MOUNTAINS); - presetCombo.AddItem("Arctic", PRESET_ARCTIC); - presetCombo.OnSelect([=](wi::gui::EventArgs args) { - switch (args.userdata) - { - default: - case PRESET_HILLS: - seedSlider.SetValue(5333); - bottomLevelSlider.SetValue(-60); - topLevelSlider.SetValue(380); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.0008f); - perlinOctavesSlider.SetValue(6); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.001f); - voronoiFadeSlider.SetValue(2.59f); - voronoiShapeSlider.SetValue(0.7f); - voronoiFalloffSlider.SetValue(6); - voronoiPerturbationSlider.SetValue(0.1f); - region1Slider.SetValue(1); - region2Slider.SetValue(2); - region3Slider.SetValue(8); - break; - case PRESET_ISLANDS: - seedSlider.SetValue(4691); - bottomLevelSlider.SetValue(-79); - topLevelSlider.SetValue(520); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.000991f); - perlinOctavesSlider.SetValue(6); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.000317f); - voronoiFadeSlider.SetValue(8.2f); - voronoiShapeSlider.SetValue(0.126f); - voronoiFalloffSlider.SetValue(1.392f); - voronoiPerturbationSlider.SetValue(0.126f); - region1Slider.SetValue(8); - region2Slider.SetValue(0.7f); - region3Slider.SetValue(8); - break; - case PRESET_MOUNTAINS: - seedSlider.SetValue(8863); - bottomLevelSlider.SetValue(0); - topLevelSlider.SetValue(2960); - perlinBlendSlider.SetValue(0.5f); - perlinFrequencySlider.SetValue(0.00279f); - perlinOctavesSlider.SetValue(8); - voronoiBlendSlider.SetValue(0.5f); - voronoiFrequencySlider.SetValue(0.000496f); - voronoiFadeSlider.SetValue(5.2f); - voronoiShapeSlider.SetValue(0.412f); - voronoiFalloffSlider.SetValue(1.456f); - voronoiPerturbationSlider.SetValue(0.092f); - region1Slider.SetValue(1); - region2Slider.SetValue(1); - region3Slider.SetValue(0.8f); - break; - case PRESET_ARCTIC: - seedSlider.SetValue(2124); - bottomLevelSlider.SetValue(-50); - topLevelSlider.SetValue(40); - perlinBlendSlider.SetValue(1); - perlinFrequencySlider.SetValue(0.002f); - perlinOctavesSlider.SetValue(4); - voronoiBlendSlider.SetValue(1); - voronoiFrequencySlider.SetValue(0.004f); - voronoiFadeSlider.SetValue(1.8f); - voronoiShapeSlider.SetValue(0.518f); - voronoiFalloffSlider.SetValue(0.2f); - voronoiPerturbationSlider.SetValue(0.298f); - region1Slider.SetValue(8); - region2Slider.SetValue(8); - region3Slider.SetValue(0); - break; - } - Generation_Restart(); - }); - AddWidget(&presetCombo); - - scaleSlider.Create(1, 10, 1, 9, "Chunk Scale: "); - scaleSlider.SetTooltip("Size of one chunk in horizontal directions.\nLarger chunk scale will cover larger distance, but will have less detail per unit."); - scaleSlider.SetSize(XMFLOAT2(200, hei)); - scaleSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&scaleSlider); - - seedSlider.Create(1, 12345, 3926, 12344, "Seed: "); - seedSlider.SetTooltip("Seed for terrain randomness"); - seedSlider.SetSize(XMFLOAT2(200, hei)); - seedSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&seedSlider); - - bottomLevelSlider.Create(-100, 0, -60, 10000, "Bottom Level: "); - bottomLevelSlider.SetTooltip("Terrain mesh grid lowest level"); - bottomLevelSlider.SetSize(XMFLOAT2(200, hei)); - bottomLevelSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&bottomLevelSlider); - - topLevelSlider.Create(0, 5000, 380, 10000, "Top Level: "); - topLevelSlider.SetTooltip("Terrain mesh grid topmost level"); - topLevelSlider.SetSize(XMFLOAT2(200, hei)); - topLevelSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&topLevelSlider); - - perlinBlendSlider.Create(0, 1, 0.5f, 10000, "Perlin Blend: "); - perlinBlendSlider.SetTooltip("Amount of perlin noise to use"); - perlinBlendSlider.SetSize(XMFLOAT2(200, hei)); - perlinBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinBlendSlider); - - perlinFrequencySlider.Create(0.0001f, 0.01f, 0.0008f, 10000, "Perlin Frequency: "); - perlinFrequencySlider.SetTooltip("Frequency for the perlin noise"); - perlinFrequencySlider.SetSize(XMFLOAT2(200, hei)); - perlinFrequencySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinFrequencySlider); - - perlinOctavesSlider.Create(1, 8, 6, 7, "Perlin Octaves: "); - perlinOctavesSlider.SetTooltip("Octave count for the perlin noise"); - perlinOctavesSlider.SetSize(XMFLOAT2(200, hei)); - perlinOctavesSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&perlinOctavesSlider); - - voronoiBlendSlider.Create(0, 1, 0.5f, 10000, "Voronoi Blend: "); - voronoiBlendSlider.SetTooltip("Amount of voronoi to use for elevation"); - voronoiBlendSlider.SetSize(XMFLOAT2(200, hei)); - voronoiBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiBlendSlider); - - voronoiFrequencySlider.Create(0.0001f, 0.01f, 0.001f, 10000, "Voronoi Frequency: "); - voronoiFrequencySlider.SetTooltip("Voronoi can create distinctly elevated areas, the more cells there are, smaller the consecutive areas"); - voronoiFrequencySlider.SetSize(XMFLOAT2(200, hei)); - voronoiFrequencySlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFrequencySlider); - - voronoiFadeSlider.Create(0, 100, 2.59f, 10000, "Voronoi Fade: "); - voronoiFadeSlider.SetTooltip("Fade out voronoi regions by distance from cell's center"); - voronoiFadeSlider.SetSize(XMFLOAT2(200, hei)); - voronoiFadeSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFadeSlider); - - voronoiShapeSlider.Create(0, 1, 0.7f, 10000, "Voronoi Shape: "); - voronoiShapeSlider.SetTooltip("How much the voronoi shape will be kept"); - voronoiShapeSlider.SetSize(XMFLOAT2(200, hei)); - voronoiShapeSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiShapeSlider); - - voronoiFalloffSlider.Create(0, 8, 6, 10000, "Voronoi Falloff: "); - voronoiFalloffSlider.SetTooltip("Controls the falloff of the voronoi distance fade effect"); - voronoiFalloffSlider.SetSize(XMFLOAT2(200, hei)); - voronoiFalloffSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiFalloffSlider); - - voronoiPerturbationSlider.Create(0, 1, 0.1f, 10000, "Voronoi Perturbation: "); - voronoiPerturbationSlider.SetTooltip("Controls the random look of voronoi region edges"); - voronoiPerturbationSlider.SetSize(XMFLOAT2(200, hei)); - voronoiPerturbationSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&voronoiPerturbationSlider); - - saveHeightmapButton.Create("Save Heightmap..."); - saveHeightmapButton.SetTooltip("Save a heightmap texture from the currently generated terrain, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be normalized into 8bit PNG format which can result in precision loss!"); - saveHeightmapButton.SetSize(XMFLOAT2(200, hei)); - saveHeightmapButton.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&saveHeightmapButton); - - heightmapButton.Create("Load Heightmap..."); - heightmapButton.SetTooltip("Load a heightmap texture, where the red channel corresponds to terrain height and the resolution to dimensions.\nThe heightmap will be placed in the world center."); - heightmapButton.SetSize(XMFLOAT2(200, hei)); - heightmapButton.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&heightmapButton); - - heightmapBlendSlider.Create(0, 1, 1, 10000, "Heightmap Blend: "); - heightmapBlendSlider.SetTooltip("Amount of displacement coming from the heightmap texture"); - heightmapBlendSlider.SetSize(XMFLOAT2(200, hei)); - heightmapBlendSlider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(&heightmapBlendSlider); - - region1Slider.Create(0, 8, 1, 10000, "Slope Region: "); - region1Slider.SetTooltip("The region's falloff power"); - region1Slider.SetSize(XMFLOAT2(200, hei)); - region1Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion1Slider); - - region2Slider.Create(0, 8, 2, 10000, "Low Altitude Region: "); - region2Slider.SetTooltip("The region's falloff power"); - region2Slider.SetSize(XMFLOAT2(200, hei)); - region2Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion2Slider); - - region3Slider.Create(0, 8, 8, 10000, "High Altitude Region: "); - region3Slider.SetTooltip("The region's falloff power"); - region3Slider.SetSize(XMFLOAT2(200, hei)); - region3Slider.SetPos(XMFLOAT2(x, y += step)); - AddWidget(®ion3Slider); - - - auto generate_callback = [=](wi::gui::EventArgs args) { - Generation_Restart(); - }; - scaleSlider.OnSlide(generate_callback); - seedSlider.OnSlide(generate_callback); - bottomLevelSlider.OnSlide(generate_callback); - topLevelSlider.OnSlide(generate_callback); - perlinFrequencySlider.OnSlide(generate_callback); - perlinBlendSlider.OnSlide(generate_callback); - perlinOctavesSlider.OnSlide(generate_callback); - voronoiBlendSlider.OnSlide(generate_callback); - voronoiFrequencySlider.OnSlide(generate_callback); - voronoiFadeSlider.OnSlide(generate_callback); - voronoiShapeSlider.OnSlide(generate_callback); - voronoiFalloffSlider.OnSlide(generate_callback); - voronoiPerturbationSlider.OnSlide(generate_callback); - heightmapBlendSlider.OnSlide(generate_callback); - region1Slider.OnSlide(generate_callback); - region2Slider.OnSlide(generate_callback); - region3Slider.OnSlide(generate_callback); - - saveHeightmapButton.OnClick([=](wi::gui::EventArgs args) { - - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::SAVE; - params.description = "PNG"; - params.extensions = { "PNG" }; - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - wi::primitive::AABB aabb; - for (auto& chunk : chunks) - { - const wi::primitive::AABB* object_aabb = scene->aabb_objects.GetComponent(chunk.second.entity); - if (object_aabb != nullptr) - { - aabb = wi::primitive::AABB::Merge(aabb, *object_aabb); - } - } - - HeightmapTexture saved_heightmap; - saved_heightmap.width = int(aabb.getHalfWidth().x * 2 + 1); - saved_heightmap.height = int(aabb.getHalfWidth().z * 2 + 1); - saved_heightmap.data.resize(saved_heightmap.width * saved_heightmap.height); - std::fill(saved_heightmap.data.begin(), saved_heightmap.data.end(), 0u); - - for (auto& chunk : chunks) - { - const ObjectComponent* object = scene->objects.GetComponent(chunk.second.entity); - if (object != nullptr) - { - const MeshComponent* mesh = scene->meshes.GetComponent(object->meshID); - if (mesh != nullptr) - { - const XMMATRIX W = XMLoadFloat4x4(&object->worldMatrix); - for (auto& x : mesh->vertex_positions) - { - XMVECTOR P = XMLoadFloat3(&x); - P = XMVector3Transform(P, W); - XMFLOAT3 p; - XMStoreFloat3(&p, P); - p.x -= aabb._min.x; - p.z -= aabb._min.z; - int coord = int(p.x) + int(p.z) * saved_heightmap.width; - saved_heightmap.data[coord] = uint8_t(wi::math::InverseLerp(aabb._min.y, aabb._max.y, p.y) * 255u); - } - } - } - } - - wi::graphics::TextureDesc desc; - desc.width = uint32_t(saved_heightmap.width); - desc.height = uint32_t(saved_heightmap.height); - desc.format = wi::graphics::Format::R8_UNORM; - bool success = wi::helper::saveTextureToFile(saved_heightmap.data, desc, wi::helper::ReplaceExtension(fileName, "PNG")); - assert(success); - - }); - }); - }); - - heightmapButton.OnClick([=](wi::gui::EventArgs args) { - - wi::helper::FileDialogParams params; - params.type = wi::helper::FileDialogParams::OPEN; - params.description = "Texture"; - params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); - wi::helper::FileDialog(params, [=](std::string fileName) { - wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { - - heightmap = {}; - int bpp = 0; - stbi_uc* rgba = stbi_load(fileName.c_str(), &heightmap.width, &heightmap.height, &bpp, 1); - if (rgba != nullptr) - { - heightmap.data.resize(heightmap.width * heightmap.height); - for (int i = 0; i < heightmap.width * heightmap.height; ++i) - { - heightmap.data[i] = rgba[i]; - } - stbi_image_free(rgba); - Generation_Restart(); - } - }); - }); - }); - - heightmap = {}; - - SetPos(XMFLOAT2(50, 110)); - SetVisible(false); - SetEnabled(true); - presetCombo.SetSelectedByUserdata(PRESET_HILLS); } diff --git a/Editor/TerrainGenerator.h b/Editor/TerrainGenerator.h index 837e7d4a5..412ee4362 100644 --- a/Editor/TerrainGenerator.h +++ b/Editor/TerrainGenerator.h @@ -143,6 +143,8 @@ struct TerrainGenerator : public wi::gui::Window wi::gui::Slider region2Slider; wi::gui::Slider region3Slider; + void Create(); + // This needs to be called at least once before using the terrain generator void init(); diff --git a/Editor/TransformWindow.cpp b/Editor/TransformWindow.cpp index e53b5b890..99be41707 100644 --- a/Editor/TransformWindow.cpp +++ b/Editor/TransformWindow.cpp @@ -9,58 +9,62 @@ using namespace wi::scene; void TransformWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Transform Window"); - SetSize(XMFLOAT2(480, 200)); + wi::gui::Window::Create(ICON_TRANSFORM " Transform" , wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(480, 360)); - float x = 100; + closeButton.SetTooltip("Delete TransformComponent\nNote that a lot of components won't work correctly without a TransformComponent!"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().transforms.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 80; + float xx = x; float y = 0; float step = 25; float siz = 50; float hei = 20; - - createButton.Create("Create New Transform"); - createButton.SetTooltip("Create a new entity with only a trasform component"); - createButton.SetPos(XMFLOAT2(x, y)); - createButton.SetSize(XMFLOAT2(350, hei)); - createButton.OnClick([=](wi::gui::EventArgs args) { - Entity entity = CreateEntity(); - editor->GetCurrentScene().transforms.Create(entity); - - wi::Archive& archive = editor->AdvanceHistory(); - archive << EditorComponent::HISTORYOP_ADD; - editor->RecordSelection(archive); - - editor->ClearSelected(); - editor->AddSelected(entity); - - editor->RecordSelection(archive); - editor->RecordAddedEntity(archive, entity); - - editor->RefreshEntityTree(); - SetEntity(entity); - }); - AddWidget(&createButton); + float wid = 200; clearButton.Create("Clear Transform"); clearButton.SetTooltip("Reset transform to identity"); - clearButton.SetPos(XMFLOAT2(x, y += step)); - clearButton.SetSize(XMFLOAT2(350, hei)); + clearButton.SetPos(XMFLOAT2(x, y)); + clearButton.SetSize(XMFLOAT2(wid + hei + 1, hei)); clearButton.OnClick([=](wi::gui::EventArgs args) { TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); if (transform != nullptr) { + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + transform->ClearTransform(); + transform->UpdateTransform(); + + editor->RecordEntity(archive, entity); } }); AddWidget(&clearButton); parentCombo.Create("Parent: "); - parentCombo.SetSize(XMFLOAT2(330, hei)); + parentCombo.SetSize(XMFLOAT2(wid, hei)); parentCombo.SetPos(XMFLOAT2(x, y += step)); parentCombo.SetEnabled(false); parentCombo.OnSelect([&](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + Scene& scene = editor->GetCurrentScene(); if (args.iValue == 0) { scene.Component_Detach(entity); @@ -70,13 +74,15 @@ void TransformWindow::Create(EditorComponent* _editor) scene.Component_Attach(entity, (Entity)args.userdata); } + editor->RecordEntity(archive, entity); + }); parentCombo.SetTooltip("Choose a parent entity (also works if selected entity has no transform)"); AddWidget(&parentCombo); txInput.Create(""); txInput.SetValue(0); - txInput.SetDescription("Translation X: "); + txInput.SetDescription("Position X: "); txInput.SetPos(XMFLOAT2(x, y += step)); txInput.SetSize(XMFLOAT2(siz, hei)); txInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -91,7 +97,7 @@ void TransformWindow::Create(EditorComponent* _editor) tyInput.Create(""); tyInput.SetValue(0); - tyInput.SetDescription("Translation Y: "); + tyInput.SetDescription("Position Y: "); tyInput.SetPos(XMFLOAT2(x, y += step)); tyInput.SetSize(XMFLOAT2(siz, hei)); tyInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -106,7 +112,7 @@ void TransformWindow::Create(EditorComponent* _editor) tzInput.Create(""); tzInput.SetValue(0); - tzInput.SetDescription("Translation Z: "); + tzInput.SetDescription("Position Z: "); tzInput.SetPos(XMFLOAT2(x, y += step)); tzInput.SetSize(XMFLOAT2(siz, hei)); tzInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -119,10 +125,56 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&tzInput); - - x = 250; - y = step * 2; + y = step; + + sxInput.Create(""); + sxInput.SetValue(1); + sxInput.SetDescription("Scale X: "); + sxInput.SetPos(XMFLOAT2(x, y += step)); + sxInput.SetSize(XMFLOAT2(siz, hei)); + sxInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.x = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&sxInput); + + syInput.Create(""); + syInput.SetValue(1); + syInput.SetDescription("Scale Y: "); + syInput.SetPos(XMFLOAT2(x, y += step)); + syInput.SetSize(XMFLOAT2(siz, hei)); + syInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.y = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&syInput); + + szInput.Create(""); + szInput.SetValue(1); + szInput.SetDescription("Scale Z: "); + szInput.SetPos(XMFLOAT2(x, y += step)); + szInput.SetSize(XMFLOAT2(siz, hei)); + szInput.OnInputAccepted([&](wi::gui::EventArgs args) { + TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); + if (transform != nullptr) + { + transform->scale_local.z = args.fValue; + transform->SetDirty(); + } + }); + AddWidget(&szInput); + + x = xx; + y = step * 4.5f; rollInput.Create(""); @@ -188,13 +240,13 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&yawInput); - - y += step * 0.5f; + x = 250; + y = step * 4.5f; rxInput.Create(""); rxInput.SetValue(0); rxInput.SetDescription("Quaternion X: "); - rxInput.SetTooltip("Rotation Quaternion.X [After input of this value, quaternion will be renormalized]"); + rxInput.SetTooltip("Rotation Quaternion.X"); rxInput.SetPos(XMFLOAT2(x, y += step)); rxInput.SetSize(XMFLOAT2(siz, hei)); rxInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -202,7 +254,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.x = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -211,7 +263,7 @@ void TransformWindow::Create(EditorComponent* _editor) ryInput.Create(""); ryInput.SetValue(0); ryInput.SetDescription("Quaternion Y: "); - ryInput.SetTooltip("Rotation Quaternion.Y [After input of this value, quaternion will be renormalized]"); + ryInput.SetTooltip("Rotation Quaternion.Y"); ryInput.SetPos(XMFLOAT2(x, y += step)); ryInput.SetSize(XMFLOAT2(siz, hei)); ryInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -219,7 +271,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.y = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -228,7 +280,7 @@ void TransformWindow::Create(EditorComponent* _editor) rzInput.Create(""); rzInput.SetValue(0); rzInput.SetDescription("Quaternion Z: "); - rzInput.SetTooltip("Rotation Quaternion.Z [After input of this value, quaternion will be renormalized]"); + rzInput.SetTooltip("Rotation Quaternion.Z"); rzInput.SetPos(XMFLOAT2(x, y += step)); rzInput.SetSize(XMFLOAT2(siz, hei)); rzInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -236,7 +288,7 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.z = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); @@ -245,7 +297,7 @@ void TransformWindow::Create(EditorComponent* _editor) rwInput.Create(""); rwInput.SetValue(1); rwInput.SetDescription("Quaternion W: "); - rwInput.SetTooltip("Rotation Quaternion.W [After input of this value, quaternion will be renormalized]"); + rwInput.SetTooltip("Rotation Quaternion.W"); rwInput.SetPos(XMFLOAT2(x, y += step)); rwInput.SetSize(XMFLOAT2(siz, hei)); rwInput.OnInputAccepted([&](wi::gui::EventArgs args) { @@ -253,71 +305,21 @@ void TransformWindow::Create(EditorComponent* _editor) if (transform != nullptr) { transform->rotation_local.w = args.fValue; - XMStoreFloat4(&transform->rotation_local, XMQuaternionNormalize(XMLoadFloat4(&transform->rotation_local))); + XMStoreFloat4(&transform->rotation_local, XMLoadFloat4(&transform->rotation_local)); transform->SetDirty(); } }); AddWidget(&rwInput); + x = xx; + y += step * 0.5f; - - x = 400; - y = step * 2; - - - sxInput.Create(""); - sxInput.SetValue(1); - sxInput.SetDescription("Scale X: "); - sxInput.SetPos(XMFLOAT2(x, y += step)); - sxInput.SetSize(XMFLOAT2(siz, hei)); - sxInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.x = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&sxInput); - - syInput.Create(""); - syInput.SetValue(1); - syInput.SetDescription("Scale Y: "); - syInput.SetPos(XMFLOAT2(x, y += step)); - syInput.SetSize(XMFLOAT2(siz, hei)); - syInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.y = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&syInput); - - szInput.Create(""); - szInput.SetValue(1); - szInput.SetDescription("Scale Z: "); - szInput.SetPos(XMFLOAT2(x, y += step)); - szInput.SetSize(XMFLOAT2(siz, hei)); - szInput.OnInputAccepted([&](wi::gui::EventArgs args) { - TransformComponent* transform = editor->GetCurrentScene().transforms.GetComponent(entity); - if (transform != nullptr) - { - transform->scale_local.z = args.fValue; - transform->SetDirty(); - } - }); - AddWidget(&szInput); - - - x = 400; - y += step * 5; + x = 250; snapScaleInput.Create(""); snapScaleInput.SetValue(1); - snapScaleInput.SetDescription("Snap mode unit for Scale: "); + snapScaleInput.SetDescription("Snap mode Scale: "); snapScaleInput.SetPos(XMFLOAT2(x, y += step)); snapScaleInput.SetSize(XMFLOAT2(siz, hei)); snapScaleInput.SetValue(editor->translator.scale_snap); @@ -328,7 +330,7 @@ void TransformWindow::Create(EditorComponent* _editor) snapRotateInput.Create(""); snapRotateInput.SetValue(1); - snapRotateInput.SetDescription("Snap mode angle for Rotate (in degrees): "); + snapRotateInput.SetDescription("Snap mode Rotate (in degrees): "); snapRotateInput.SetPos(XMFLOAT2(x, y += step)); snapRotateInput.SetSize(XMFLOAT2(siz, hei)); snapRotateInput.SetValue(editor->translator.rotate_snap / XM_PI * 180); @@ -339,7 +341,7 @@ void TransformWindow::Create(EditorComponent* _editor) snapTranslateInput.Create(""); snapTranslateInput.SetValue(1); - snapTranslateInput.SetDescription("Snap mode unit for Translate: "); + snapTranslateInput.SetDescription("Snap mode Translate: "); snapTranslateInput.SetPos(XMFLOAT2(x, y += step)); snapTranslateInput.SetSize(XMFLOAT2(siz, hei)); snapTranslateInput.SetValue(editor->translator.translate_snap); @@ -348,7 +350,8 @@ void TransformWindow::Create(EditorComponent* _editor) }); AddWidget(&snapTranslateInput); - Translate(XMFLOAT3((float)editor->GetLogicalWidth() - 750, 100, 0)); + + SetMinimized(true); SetVisible(false); SetEntity(INVALID_ENTITY); @@ -389,8 +392,6 @@ void TransformWindow::SetEntity(Entity entity) SetEnabled(false); } - createButton.SetEnabled(true); - parentCombo.SetEnabled(true); parentCombo.ClearItems(); parentCombo.AddItem("NO PARENT"); diff --git a/Editor/TransformWindow.h b/Editor/TransformWindow.h index 86876bd64..4240885bc 100644 --- a/Editor/TransformWindow.h +++ b/Editor/TransformWindow.h @@ -12,7 +12,6 @@ public: wi::ecs::Entity entity; void SetEntity(wi::ecs::Entity entity); - wi::gui::Button createButton; wi::gui::Button clearButton; wi::gui::ComboBox parentCombo; diff --git a/Editor/WeatherWindow.cpp b/Editor/WeatherWindow.cpp index 94a149851..298fd0a6a 100644 --- a/Editor/WeatherWindow.cpp +++ b/Editor/WeatherWindow.cpp @@ -9,18 +9,96 @@ using namespace wi::graphics; void WeatherWindow::Create(EditorComponent* _editor) { editor = _editor; - wi::gui::Window::Create("Weather Window"); - SetSize(XMFLOAT2(660, 300)); + wi::gui::Window::Create(ICON_WEATHER " Weather", wi::gui::Window::WindowControls::COLLAPSE | wi::gui::Window::WindowControls::CLOSE); + SetSize(XMFLOAT2(660, 1300)); - float x = 180; + closeButton.SetTooltip("Delete WeatherComponent"); + OnClose([=](wi::gui::EventArgs args) { + + wi::Archive& archive = editor->AdvanceHistory(); + archive << EditorComponent::HISTORYOP_COMPONENT_DATA; + editor->RecordEntity(archive, entity); + + editor->GetCurrentScene().weathers.Remove(entity); + + editor->RecordEntity(archive, entity); + + editor->RefreshEntityTree(); + }); + + float x = 150; float y = 0; float hei = 18; float step = hei + 2; + float wid = 110; + float mod_x = 10; + + primaryButton.Create("Set as primary weather"); + primaryButton.SetTooltip("This will be set as the primary weather used in rendering"); + primaryButton.SetPos(XMFLOAT2(mod_x, y)); + primaryButton.OnClick([=](wi::gui::EventArgs args) { + + Scene& scene = editor->GetCurrentScene(); + if (!scene.weathers.Contains(entity)) + return; + size_t current = scene.weathers.GetIndex(entity); + scene.weathers.MoveItem(current, 0); + + // Also, we invalidate all environment probes to reflect the sky changes. + InvalidateProbes(); + + }); + AddWidget(&primaryButton); + + colorComboBox.Create("Color picker mode: "); + colorComboBox.SetPos(XMFLOAT2(x, y += step)); + colorComboBox.AddItem("Ambient color"); + colorComboBox.AddItem("Horizon color"); + colorComboBox.AddItem("Zenith color"); + colorComboBox.AddItem("Ocean color"); + colorComboBox.AddItem("V. Cloud color"); + colorComboBox.SetTooltip("Choose the destination data of the color picker."); + AddWidget(&colorComboBox); + + colorPicker.Create("Color", wi::gui::Window::WindowControls::NONE); + colorPicker.SetPos(XMFLOAT2(mod_x, y += step)); + colorPicker.SetVisible(false); + colorPicker.SetEnabled(true); + colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + switch (colorComboBox.GetSelected()) + { + default: + case 0: + weather.ambient = args.color.toFloat3(); + break; + case 1: + weather.horizon = args.color.toFloat3(); + break; + case 2: + weather.zenith = args.color.toFloat3(); + break; + case 3: + weather.oceanParameters.waterColor = args.color.toFloat4(); + break; + case 4: + weather.volumetricCloudParameters.Albedo = args.color.toFloat3(); + break; + } + }); + AddWidget(&colorPicker); + + y += colorPicker.GetScale().y + 5; + + float mod_wid = colorPicker.GetScale().x; + colorComboBox.SetSize(XMFLOAT2(mod_wid - x + mod_x - hei - 1, hei)); + primaryButton.SetSize(XMFLOAT2(mod_wid, hei)); + heightFogCheckBox.Create("Height fog: "); heightFogCheckBox.SetSize(XMFLOAT2(hei, hei)); - heightFogCheckBox.SetPos(XMFLOAT2(x + 100, y)); + heightFogCheckBox.SetPos(XMFLOAT2(x, y)); heightFogCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetHeightFog(args.bValue); @@ -28,7 +106,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&heightFogCheckBox); fogStartSlider.Create(0, 5000, 0, 100000, "Fog Start: "); - fogStartSlider.SetSize(XMFLOAT2(100, hei)); + fogStartSlider.SetSize(XMFLOAT2(wid, hei)); fogStartSlider.SetPos(XMFLOAT2(x, y += step)); fogStartSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogStart = args.fValue; @@ -36,7 +114,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogStartSlider); fogEndSlider.Create(1, 5000, 1000, 10000, "Fog End: "); - fogEndSlider.SetSize(XMFLOAT2(100, hei)); + fogEndSlider.SetSize(XMFLOAT2(wid, hei)); fogEndSlider.SetPos(XMFLOAT2(x, y += step)); fogEndSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogEnd = args.fValue; @@ -44,7 +122,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogEndSlider); fogHeightStartSlider.Create(-100, 100, 1, 10000, "Fog Height Start: "); - fogHeightStartSlider.SetSize(XMFLOAT2(100, hei)); + fogHeightStartSlider.SetSize(XMFLOAT2(wid, hei)); fogHeightStartSlider.SetPos(XMFLOAT2(x, y += step)); fogHeightStartSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightStart = args.fValue; @@ -52,7 +130,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightStartSlider); fogHeightEndSlider.Create(-100, 100, 3, 10000, "Fog Height End: "); - fogHeightEndSlider.SetSize(XMFLOAT2(100, hei)); + fogHeightEndSlider.SetSize(XMFLOAT2(wid, hei)); fogHeightEndSlider.SetPos(XMFLOAT2(x, y += step)); fogHeightEndSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightEnd = args.fValue; @@ -60,7 +138,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightEndSlider); fogHeightSkySlider.Create(0, 1, 0, 10000, "Fog Height Sky: "); - fogHeightSkySlider.SetSize(XMFLOAT2(100, hei)); + fogHeightSkySlider.SetSize(XMFLOAT2(wid, hei)); fogHeightSkySlider.SetPos(XMFLOAT2(x, y += step)); fogHeightSkySlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().fogHeightSky = args.fValue; @@ -68,7 +146,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&fogHeightSkySlider); cloudinessSlider.Create(0, 1, 0.0f, 10000, "Cloudiness: "); - cloudinessSlider.SetSize(XMFLOAT2(100, hei)); + cloudinessSlider.SetSize(XMFLOAT2(wid, hei)); cloudinessSlider.SetPos(XMFLOAT2(x, y += step)); cloudinessSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudiness = args.fValue; @@ -76,7 +154,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudinessSlider); cloudScaleSlider.Create(0.00005f, 0.001f, 0.0005f, 10000, "Cloud Scale: "); - cloudScaleSlider.SetSize(XMFLOAT2(100, hei)); + cloudScaleSlider.SetSize(XMFLOAT2(wid, hei)); cloudScaleSlider.SetPos(XMFLOAT2(x, y += step)); cloudScaleSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudScale = args.fValue; @@ -84,15 +162,15 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudScaleSlider); cloudSpeedSlider.Create(0.001f, 0.2f, 0.1f, 10000, "Cloud Speed: "); - cloudSpeedSlider.SetSize(XMFLOAT2(100, hei)); + cloudSpeedSlider.SetSize(XMFLOAT2(wid, hei)); cloudSpeedSlider.SetPos(XMFLOAT2(x, y += step)); cloudSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloudSpeed = args.fValue; }); AddWidget(&cloudSpeedSlider); - cloudShadowAmountSlider.Create(0, 1, 0, 10000, "Cloud Shadow Amount: "); - cloudShadowAmountSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowAmountSlider.Create(0, 1, 0, 10000, "Cloud Shadow: "); + cloudShadowAmountSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowAmountSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowAmountSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_amount = args.fValue; @@ -100,7 +178,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowAmountSlider); cloudShadowSpeedSlider.Create(0, 1, 0.2f, 10000, "Cloud Shadow Speed: "); - cloudShadowSpeedSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowSpeedSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowSpeedSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_speed = args.fValue; @@ -108,7 +186,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowSpeedSlider); cloudShadowScaleSlider.Create(0.0001f, 0.02f, 0.005f, 10000, "Cloud Shadow Scale: "); - cloudShadowScaleSlider.SetSize(XMFLOAT2(100, hei)); + cloudShadowScaleSlider.SetSize(XMFLOAT2(wid, hei)); cloudShadowScaleSlider.SetPos(XMFLOAT2(x, y += step)); cloudShadowScaleSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().cloud_shadow_scale = args.fValue; @@ -116,7 +194,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&cloudShadowScaleSlider); windSpeedSlider.Create(0.0f, 4.0f, 1.0f, 10000, "Wind Speed: "); - windSpeedSlider.SetSize(XMFLOAT2(100, hei)); + windSpeedSlider.SetSize(XMFLOAT2(wid, hei)); windSpeedSlider.SetPos(XMFLOAT2(x, y += step)); windSpeedSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windSpeed = args.fValue; @@ -124,7 +202,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windSpeedSlider); windMagnitudeSlider.Create(0.0f, 0.2f, 0.0f, 10000, "Wind Magnitude: "); - windMagnitudeSlider.SetSize(XMFLOAT2(100, hei)); + windMagnitudeSlider.SetSize(XMFLOAT2(wid, hei)); windMagnitudeSlider.SetPos(XMFLOAT2(x, y += step)); windMagnitudeSlider.OnSlide([&](wi::gui::EventArgs args) { UpdateWind(); @@ -132,7 +210,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windMagnitudeSlider); windDirectionSlider.Create(0, 1, 0, 10000, "Wind Direction: "); - windDirectionSlider.SetSize(XMFLOAT2(100, hei)); + windDirectionSlider.SetSize(XMFLOAT2(wid, hei)); windDirectionSlider.SetPos(XMFLOAT2(x, y += step)); windDirectionSlider.OnSlide([&](wi::gui::EventArgs args) { UpdateWind(); @@ -140,7 +218,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windDirectionSlider); windWaveSizeSlider.Create(0, 1, 0, 10000, "Wind Wave Size: "); - windWaveSizeSlider.SetSize(XMFLOAT2(100, hei)); + windWaveSizeSlider.SetSize(XMFLOAT2(wid, hei)); windWaveSizeSlider.SetPos(XMFLOAT2(x, y += step)); windWaveSizeSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windWaveSize = args.fValue; @@ -148,7 +226,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windWaveSizeSlider); windRandomnessSlider.Create(0, 10, 5, 10000, "Wind Randomness: "); - windRandomnessSlider.SetSize(XMFLOAT2(100, hei)); + windRandomnessSlider.SetSize(XMFLOAT2(wid, hei)); windRandomnessSlider.SetPos(XMFLOAT2(x, y += step)); windRandomnessSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().windRandomness = args.fValue; @@ -156,7 +234,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&windRandomnessSlider); skyExposureSlider.Create(0, 4, 1, 10000, "Sky Exposure: "); - skyExposureSlider.SetSize(XMFLOAT2(100, hei)); + skyExposureSlider.SetSize(XMFLOAT2(wid, hei)); skyExposureSlider.SetPos(XMFLOAT2(x, y += step)); skyExposureSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().skyExposure = args.fValue; @@ -165,7 +243,7 @@ void WeatherWindow::Create(EditorComponent* _editor) starsSlider.Create(0, 1, 0.5f, 10000, "Stars: "); starsSlider.SetTooltip("Amount of stars in the night sky (0 to disable). \nIt will only work with the realistic sky enabled. \nThey will be more visible at night time."); - starsSlider.SetSize(XMFLOAT2(100, hei)); + starsSlider.SetSize(XMFLOAT2(wid, hei)); starsSlider.SetPos(XMFLOAT2(x, y += step)); starsSlider.OnSlide([&](wi::gui::EventArgs args) { GetWeather().stars = args.fValue; @@ -189,7 +267,7 @@ void WeatherWindow::Create(EditorComponent* _editor) realisticskyCheckBox.Create("Realistic sky: "); realisticskyCheckBox.SetTooltip("Physically based sky rendering model."); realisticskyCheckBox.SetSize(XMFLOAT2(hei, hei)); - realisticskyCheckBox.SetPos(XMFLOAT2(x + 120, y)); + realisticskyCheckBox.SetPos(XMFLOAT2(x, y += step)); realisticskyCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetRealisticSky(args.bValue); @@ -200,10 +278,39 @@ void WeatherWindow::Create(EditorComponent* _editor) }); AddWidget(&realisticskyCheckBox); + + volumetricCloudsCheckBox.Create("Volumetric clouds: "); + volumetricCloudsCheckBox.SetTooltip("Enable volumetric cloud rendering, which is separate from the simple cloud parameters."); + volumetricCloudsCheckBox.SetSize(XMFLOAT2(hei, hei)); + volumetricCloudsCheckBox.SetPos(XMFLOAT2(x, y += step)); + volumetricCloudsCheckBox.OnClick([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.SetVolumetricClouds(args.bValue); + }); + AddWidget(&volumetricCloudsCheckBox); + + coverageAmountSlider.Create(0, 10, 0, 1000, "Coverage amount: "); + coverageAmountSlider.SetSize(XMFLOAT2(wid, hei)); + coverageAmountSlider.SetPos(XMFLOAT2(x, y += step)); + coverageAmountSlider.OnSlide([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.volumetricCloudParameters.CoverageAmount = args.fValue; + }); + AddWidget(&coverageAmountSlider); + + coverageMinimumSlider.Create(1, 2, 1, 1000, "Coverage minimmum: "); + coverageMinimumSlider.SetSize(XMFLOAT2(wid, hei)); + coverageMinimumSlider.SetPos(XMFLOAT2(x, y += step)); + coverageMinimumSlider.OnSlide([&](wi::gui::EventArgs args) { + auto& weather = GetWeather(); + weather.volumetricCloudParameters.CoverageMinimum = args.fValue; + }); + AddWidget(&coverageMinimumSlider); + skyButton.Create("Load Sky"); skyButton.SetTooltip("Load a skybox cubemap texture..."); - skyButton.SetSize(XMFLOAT2(240, hei)); - skyButton.SetPos(XMFLOAT2(x-100, y += step)); + skyButton.SetSize(XMFLOAT2(mod_wid, hei)); + skyButton.SetPos(XMFLOAT2(mod_x, y += step)); skyButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -237,8 +344,8 @@ void WeatherWindow::Create(EditorComponent* _editor) colorgradingButton.Create("Load Color Grading LUT"); colorgradingButton.SetTooltip("Load a color grading lookup texture. It must be a 256x16 RGBA image!"); - colorgradingButton.SetSize(XMFLOAT2(240, hei)); - colorgradingButton.SetPos(XMFLOAT2(x - 100, y += step)); + colorgradingButton.SetSize(XMFLOAT2(mod_wid, hei)); + colorgradingButton.SetPos(XMFLOAT2(mod_x, y += step)); colorgradingButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -270,9 +377,9 @@ void WeatherWindow::Create(EditorComponent* _editor) // Ocean params: - ocean_enabledCheckBox.Create("Ocean simulation enabled: "); + ocean_enabledCheckBox.Create("Ocean simulation: "); ocean_enabledCheckBox.SetSize(XMFLOAT2(hei, hei)); - ocean_enabledCheckBox.SetPos(XMFLOAT2(x + 100, y += step)); + ocean_enabledCheckBox.SetPos(XMFLOAT2(x, y += step)); ocean_enabledCheckBox.OnClick([&](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.SetOceanEnabled(args.bValue); @@ -285,7 +392,7 @@ void WeatherWindow::Create(EditorComponent* _editor) ocean_patchSizeSlider.Create(1, 1000, 1000, 100000, "Patch size: "); - ocean_patchSizeSlider.SetSize(XMFLOAT2(100, hei)); + ocean_patchSizeSlider.SetSize(XMFLOAT2(wid, hei)); ocean_patchSizeSlider.SetPos(XMFLOAT2(x, y += step)); ocean_patchSizeSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.patch_length); ocean_patchSizeSlider.SetTooltip("Adjust water tiling patch size"); @@ -297,7 +404,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_patchSizeSlider); ocean_waveAmplitudeSlider.Create(0, 1000, 1000, 100000, "Wave amplitude: "); - ocean_waveAmplitudeSlider.SetSize(XMFLOAT2(100, hei)); + ocean_waveAmplitudeSlider.SetSize(XMFLOAT2(wid, hei)); ocean_waveAmplitudeSlider.SetPos(XMFLOAT2(x, y += step)); ocean_waveAmplitudeSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.wave_amplitude); ocean_waveAmplitudeSlider.SetTooltip("Adjust wave size"); @@ -309,7 +416,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_waveAmplitudeSlider); ocean_choppyScaleSlider.Create(0, 10, 1000, 100000, "Choppiness: "); - ocean_choppyScaleSlider.SetSize(XMFLOAT2(100, hei)); + ocean_choppyScaleSlider.SetSize(XMFLOAT2(wid, hei)); ocean_choppyScaleSlider.SetPos(XMFLOAT2(x, y += step)); ocean_choppyScaleSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.choppy_scale); ocean_choppyScaleSlider.SetTooltip("Adjust wave choppiness"); @@ -320,7 +427,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_choppyScaleSlider); ocean_windDependencySlider.Create(0, 1, 1000, 100000, "Wind dependency: "); - ocean_windDependencySlider.SetSize(XMFLOAT2(100, hei)); + ocean_windDependencySlider.SetSize(XMFLOAT2(wid, hei)); ocean_windDependencySlider.SetPos(XMFLOAT2(x, y += step)); ocean_windDependencySlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.wind_dependency); ocean_windDependencySlider.SetTooltip("Adjust wind contribution"); @@ -332,7 +439,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_windDependencySlider); ocean_timeScaleSlider.Create(0, 4, 1000, 100000, "Time scale: "); - ocean_timeScaleSlider.SetSize(XMFLOAT2(100, hei)); + ocean_timeScaleSlider.SetSize(XMFLOAT2(wid, hei)); ocean_timeScaleSlider.SetPos(XMFLOAT2(x, y += step)); ocean_timeScaleSlider.SetValue(editor->GetCurrentScene().weather.oceanParameters.time_scale); ocean_timeScaleSlider.SetTooltip("Adjust simulation speed"); @@ -343,7 +450,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_timeScaleSlider); ocean_heightSlider.Create(-100, 100, 0, 100000, "Water level: "); - ocean_heightSlider.SetSize(XMFLOAT2(100, hei)); + ocean_heightSlider.SetSize(XMFLOAT2(wid, hei)); ocean_heightSlider.SetPos(XMFLOAT2(x, y += step)); ocean_heightSlider.SetValue(0); ocean_heightSlider.SetTooltip("Adjust water level"); @@ -354,7 +461,7 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_heightSlider); ocean_detailSlider.Create(1, 10, 0, 9, "Surface Detail: "); - ocean_detailSlider.SetSize(XMFLOAT2(100, hei)); + ocean_detailSlider.SetSize(XMFLOAT2(wid, hei)); ocean_detailSlider.SetPos(XMFLOAT2(x, y += step)); ocean_detailSlider.SetValue(4); ocean_detailSlider.SetTooltip("Adjust surface tessellation resolution. High values can decrease performance."); @@ -364,8 +471,8 @@ void WeatherWindow::Create(EditorComponent* _editor) }); AddWidget(&ocean_detailSlider); - ocean_toleranceSlider.Create(1, 10, 0, 1000, "Displacement Tolerance: "); - ocean_toleranceSlider.SetSize(XMFLOAT2(100, hei)); + ocean_toleranceSlider.Create(1, 10, 0, 1000, "Tolerance: "); + ocean_toleranceSlider.SetSize(XMFLOAT2(wid, hei)); ocean_toleranceSlider.SetPos(XMFLOAT2(x, y += step)); ocean_toleranceSlider.SetValue(2); ocean_toleranceSlider.SetTooltip("Big waves can introduce glitches on screen borders, this can fix that but surface detail will decrease."); @@ -376,10 +483,10 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_toleranceSlider); - ocean_resetButton.Create("Reset Ocean to default"); + ocean_resetButton.Create("Reset Ocean"); ocean_resetButton.SetTooltip("Reset ocean to default values."); - ocean_resetButton.SetSize(XMFLOAT2(240, hei)); - ocean_resetButton.SetPos(XMFLOAT2(x - 100, y += step)); + ocean_resetButton.SetSize(XMFLOAT2(mod_wid, hei)); + ocean_resetButton.SetPos(XMFLOAT2(mod_x, y += step)); ocean_resetButton.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); weather.oceanParameters = wi::Ocean::OceanParameters(); @@ -388,99 +495,14 @@ void WeatherWindow::Create(EditorComponent* _editor) AddWidget(&ocean_resetButton); - - - - - - - - - x = 340; - y = 0; - - colorComboBox.Create("Color picker mode: "); - colorComboBox.SetSize(XMFLOAT2(120, hei)); - colorComboBox.SetPos(XMFLOAT2(x + 150, y)); - colorComboBox.AddItem("Ambient color"); - colorComboBox.AddItem("Horizon color"); - colorComboBox.AddItem("Zenith color"); - colorComboBox.AddItem("Ocean color"); - colorComboBox.AddItem("V. Cloud color"); - colorComboBox.SetTooltip("Choose the destination data of the color picker."); - AddWidget(&colorComboBox); - - y += 10; - - colorPicker.Create("Color", false); - colorPicker.SetPos(XMFLOAT2(x, y += step)); - colorPicker.SetVisible(false); - colorPicker.SetEnabled(true); - colorPicker.OnColorChanged([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - switch (colorComboBox.GetSelected()) - { - default: - case 0: - weather.ambient = args.color.toFloat3(); - break; - case 1: - weather.horizon = args.color.toFloat3(); - break; - case 2: - weather.zenith = args.color.toFloat3(); - break; - case 3: - weather.oceanParameters.waterColor = args.color.toFloat4(); - break; - case 4: - weather.volumetricCloudParameters.Albedo = args.color.toFloat3(); - break; - } - }); - AddWidget(&colorPicker); - - y += colorPicker.GetScale().y; - - - volumetricCloudsCheckBox.Create("Volumetric clouds: "); - volumetricCloudsCheckBox.SetTooltip("Enable volumetric cloud rendering, which is separate from the simple cloud parameters."); - volumetricCloudsCheckBox.SetSize(XMFLOAT2(hei, hei)); - volumetricCloudsCheckBox.SetPos(XMFLOAT2(x + 280, y += step)); - volumetricCloudsCheckBox.OnClick([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.SetVolumetricClouds(args.bValue); - }); - AddWidget(&volumetricCloudsCheckBox); - - coverageAmountSlider.Create(0, 10, 0, 1000, "Coverage amount: "); - coverageAmountSlider.SetSize(XMFLOAT2(100, hei)); - coverageAmountSlider.SetPos(XMFLOAT2(x + 150, y += step)); - coverageAmountSlider.OnSlide([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.volumetricCloudParameters.CoverageAmount = args.fValue; - }); - AddWidget(&coverageAmountSlider); - - coverageMinimumSlider.Create(1, 2, 1, 1000, "Coverage minimmum: "); - coverageMinimumSlider.SetSize(XMFLOAT2(100, hei)); - coverageMinimumSlider.SetPos(XMFLOAT2(x + 150, y += step)); - coverageMinimumSlider.OnSlide([&](wi::gui::EventArgs args) { - auto& weather = GetWeather(); - weather.volumetricCloudParameters.CoverageMinimum = args.fValue; - }); - AddWidget(&coverageMinimumSlider); - - preset0Button.Create("WeatherPreset - Default"); preset0Button.SetTooltip("Apply this weather preset to the world."); - preset0Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset0Button.SetPos(XMFLOAT2(x, y += step)); + preset0Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset0Button.SetPos(XMFLOAT2(mod_x, y += step)); preset0Button.OnClick([=](wi::gui::EventArgs args) { - Scene& scene = editor->GetCurrentScene(); - scene.weathers.Clear(); - scene.weather = WeatherComponent(); + auto& weather = GetWeather(); + weather = WeatherComponent(); InvalidateProbes(); @@ -489,8 +511,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset1Button.Create("WeatherPreset - Daytime"); preset1Button.SetTooltip("Apply this weather preset to the world."); - preset1Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset1Button.SetPos(XMFLOAT2(x, y += step)); + preset1Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset1Button.SetPos(XMFLOAT2(mod_x, y += step)); preset1Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -509,8 +531,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset2Button.Create("WeatherPreset - Sunset"); preset2Button.SetTooltip("Apply this weather preset to the world."); - preset2Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset2Button.SetPos(XMFLOAT2(x, y += step)); + preset2Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset2Button.SetPos(XMFLOAT2(mod_x, y += step)); preset2Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -529,8 +551,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset3Button.Create("WeatherPreset - Cloudy"); preset3Button.SetTooltip("Apply this weather preset to the world."); - preset3Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset3Button.SetPos(XMFLOAT2(x, y += step)); + preset3Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset3Button.SetPos(XMFLOAT2(mod_x, y += step)); preset3Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -549,8 +571,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset4Button.Create("WeatherPreset - Night"); preset4Button.SetTooltip("Apply this weather preset to the world."); - preset4Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset4Button.SetPos(XMFLOAT2(x, y += step)); + preset4Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset4Button.SetPos(XMFLOAT2(mod_x, y += step)); preset4Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -569,8 +591,8 @@ void WeatherWindow::Create(EditorComponent* _editor) preset5Button.Create("WeatherPreset - White Furnace"); preset5Button.SetTooltip("The white furnace mode sets the environment to fully white, it is useful to test energy conservation of light and materials. \nIf you don't see it as fully white, it is because the tone mapping."); - preset5Button.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - preset5Button.SetPos(XMFLOAT2(x, y += step)); + preset5Button.SetSize(XMFLOAT2(mod_wid, hei)); + preset5Button.SetPos(XMFLOAT2(mod_x, y += step)); preset5Button.OnClick([=](wi::gui::EventArgs args) { auto& weather = GetWeather(); @@ -591,8 +613,8 @@ void WeatherWindow::Create(EditorComponent* _editor) eliminateCoarseCascadesButton.Create("EliminateCoarseCascades"); eliminateCoarseCascadesButton.SetTooltip("Eliminate the coarse cascade mask for every object in the scene."); - eliminateCoarseCascadesButton.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - eliminateCoarseCascadesButton.SetPos(XMFLOAT2(x, y += step * 2)); + eliminateCoarseCascadesButton.SetSize(XMFLOAT2(mod_wid, hei)); + eliminateCoarseCascadesButton.SetPos(XMFLOAT2(mod_x, y += step * 2)); eliminateCoarseCascadesButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -607,8 +629,8 @@ void WeatherWindow::Create(EditorComponent* _editor) ktxConvButton.Create("KTX2 Convert"); ktxConvButton.SetTooltip("All material textures in the scene will be converted to KTX2 format.\nTHIS MIGHT TAKE LONG, SO GET YOURSELF A COFFEE OR TEA!"); - ktxConvButton.SetSize(XMFLOAT2(colorPicker.GetScale().x, hei)); - ktxConvButton.SetPos(XMFLOAT2(x, y += step)); + ktxConvButton.SetSize(XMFLOAT2(mod_wid, hei)); + ktxConvButton.SetPos(XMFLOAT2(mod_x, y += step)); ktxConvButton.OnClick([=](wi::gui::EventArgs args) { Scene& scene = editor->GetCurrentScene(); @@ -659,16 +681,26 @@ void WeatherWindow::Create(EditorComponent* _editor) - Translate(XMFLOAT3(130, 30, 0)); + SetMinimized(true); SetVisible(false); } +void WeatherWindow::SetEntity(wi::ecs::Entity entity) +{ + this->entity = entity; + Scene& scene = editor->GetCurrentScene(); + if (!scene.weathers.Contains(entity)) + { + this->entity = INVALID_ENTITY; + } +} + void WeatherWindow::Update() { Scene& scene = editor->GetCurrentScene(); if (scene.weathers.GetCount() > 0) { - auto& weather = scene.weathers[0]; + auto& weather = GetWeather(); if (!weather.skyMapName.empty()) { @@ -741,11 +773,11 @@ void WeatherWindow::Update() WeatherComponent& WeatherWindow::GetWeather() const { Scene& scene = editor->GetCurrentScene(); - if (scene.weathers.GetCount() == 0) + if (!scene.weathers.Contains(entity)) { - scene.weathers.Create(CreateEntity()); + return scene.weather; } - return scene.weathers[0]; + return *scene.weathers.GetComponent(entity); } void WeatherWindow::InvalidateProbes() const diff --git a/Editor/WeatherWindow.h b/Editor/WeatherWindow.h index eaea29b01..5db68977a 100644 --- a/Editor/WeatherWindow.h +++ b/Editor/WeatherWindow.h @@ -13,9 +13,12 @@ public: EditorComponent* editor = nullptr; + wi::ecs::Entity entity = wi::ecs::INVALID_ENTITY; + void SetEntity(wi::ecs::Entity entity); wi::scene::WeatherComponent& GetWeather() const; void InvalidateProbes() const; + wi::gui::Button primaryButton; wi::gui::CheckBox heightFogCheckBox; wi::gui::Slider fogStartSlider; wi::gui::Slider fogEndSlider; diff --git a/Editor/images/armature.dds b/Editor/images/armature.dds deleted file mode 100644 index 89a5d6b11..000000000 Binary files a/Editor/images/armature.dds and /dev/null differ diff --git a/Editor/images/camera.dds b/Editor/images/camera.dds deleted file mode 100644 index 7764daa08..000000000 Binary files a/Editor/images/camera.dds and /dev/null differ diff --git a/Editor/images/decal.dds b/Editor/images/decal.dds deleted file mode 100644 index d2060c71e..000000000 Binary files a/Editor/images/decal.dds and /dev/null differ diff --git a/Editor/images/directional_light.dds b/Editor/images/directional_light.dds deleted file mode 100644 index b2e5d5b8e..000000000 Binary files a/Editor/images/directional_light.dds and /dev/null differ diff --git a/Editor/images/emitter.dds b/Editor/images/emitter.dds deleted file mode 100644 index b159e02d0..000000000 Binary files a/Editor/images/emitter.dds and /dev/null differ diff --git a/Editor/images/forcefield.dds b/Editor/images/forcefield.dds deleted file mode 100644 index c9c4d69bc..000000000 Binary files a/Editor/images/forcefield.dds and /dev/null differ diff --git a/Editor/images/hair.dds b/Editor/images/hair.dds deleted file mode 100644 index 576bb57ec..000000000 Binary files a/Editor/images/hair.dds and /dev/null differ diff --git a/Editor/images/leaf.dds b/Editor/images/leaf.dds deleted file mode 100644 index b8d4c4425..000000000 Binary files a/Editor/images/leaf.dds and /dev/null differ diff --git a/Editor/images/pointlight.dds b/Editor/images/pointlight.dds deleted file mode 100644 index 940a11a5f..000000000 Binary files a/Editor/images/pointlight.dds and /dev/null differ diff --git a/Editor/images/ripple.png b/Editor/images/ripple.png deleted file mode 100644 index 14edbcfac..000000000 Binary files a/Editor/images/ripple.png and /dev/null differ diff --git a/Editor/images/sound.dds b/Editor/images/sound.dds deleted file mode 100644 index 94e836998..000000000 Binary files a/Editor/images/sound.dds and /dev/null differ diff --git a/Editor/images/spotlight.dds b/Editor/images/spotlight.dds deleted file mode 100644 index a92d25f5c..000000000 Binary files a/Editor/images/spotlight.dds and /dev/null differ diff --git a/WickedEngine/wiApplication.cpp b/WickedEngine/wiApplication.cpp index 6f8c40276..2619f546c 100644 --- a/WickedEngine/wiApplication.cpp +++ b/WickedEngine/wiApplication.cpp @@ -384,7 +384,16 @@ namespace wi infodisplay_str += "Graphics pipelines active: " + std::to_string(graphicsDevice->GetActivePipelineCount()) + "\n"; } - wi::font::Params params = wi::font::Params(4, 4, infoDisplay.size, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP, wi::Color(255, 255, 255, 255), wi::Color(0, 0, 0, 255)); + wi::font::Params params = wi::font::Params( + 4, + 4, + infoDisplay.size, + wi::font::WIFALIGN_LEFT, + wi::font::WIFALIGN_TOP, + wi::Color::White(), + wi::Color::Shadow() + ); + params.shadow_softness = 0.4f; // Explanation: this compose pass is in LINEAR space if display output is linear or HDR10 // If HDR10, the HDR10 output mapping will be performed on whole image later when drawing to swapchain diff --git a/WickedEngine/wiColor.h b/WickedEngine/wiColor.h index 62453a7ad..6fe41fdd9 100644 --- a/WickedEngine/wiColor.h +++ b/WickedEngine/wiColor.h @@ -68,6 +68,7 @@ namespace wi static constexpr Color Gray() { return Color(127, 127, 127, 255); } static constexpr Color Ghost() { return Color(127, 127, 127, 127); } static constexpr Color Booger() { return Color(127, 127, 127, 200); } + static constexpr Color Shadow() { return Color(0, 0, 0, 100); } static constexpr Color Warning() { return 0xFF66FFFF; } // light yellow static constexpr Color Error() { return 0xFF6666FF; } // light red diff --git a/WickedEngine/wiECS.h b/WickedEngine/wiECS.h index 772bf4d32..e665026c2 100644 --- a/WickedEngine/wiECS.h +++ b/WickedEngine/wiECS.h @@ -329,6 +329,12 @@ namespace wi::ecs // 0 <= index < GetCount() inline const Component& operator[](size_t index) const { return components[index]; } + // Returns the tightly packed [read only] entity array + inline const wi::vector& GetEntityArray() const { return entities; } + + // Returns the tightly packed [read only] component array + inline const wi::vector& GetComponentArray() const { return components; } + private: // This is a linear array of alive components wi::vector components; diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index 746de0b81..ef146d214 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -44,42 +44,6 @@ namespace wi::font static Texture texture; - struct Glyph - { - float x; - float y; - float width; - float height; - float tc_left; - float tc_right; - float tc_top; - float tc_bottom; - }; - static wi::unordered_map glyph_lookup; - static wi::unordered_map rect_lookup; - struct SDF - { - static constexpr int padding = 5; - static constexpr unsigned char onedge_value = 180; - static constexpr float pixel_dist_scale = float(onedge_value) / float(padding); - int width; - int height; - int xoff; - int yoff; - wi::vector bitmap; - }; - static wi::unordered_map sdf_lookup; - // pack glyph identifiers to a 32-bit hash: - // height: 10 bits (height supported: 0 - 1023) - // style: 6 bits (number of font styles supported: 0 - 63) - // code: 16 bits (character code range supported: 0 - 65535) - constexpr int32_t glyphhash(int code, int style, int height) { return ((code & 0xFFFF) << 16) | ((style & 0x3F) << 10) | (height & 0x3FF); } - constexpr int codefromhash(int64_t hash) { return int((hash >> 16) & 0xFFFF); } - constexpr int stylefromhash(int64_t hash) { return int((hash >> 10) & 0x3F); } - constexpr int heightfromhash(int64_t hash) { return int((hash >> 0) & 0x3FF); } - static wi::unordered_set pendingGlyphs; - static wi::SpinLock glyphLock; - struct FontStyle { std::string name; @@ -110,7 +74,44 @@ namespace wi::font } } }; - static wi::vector fontStyles; + static wi::vector> fontStyles; + + struct Glyph + { + float x; + float y; + float width; + float height; + float tc_left; + float tc_right; + float tc_top; + float tc_bottom; + const FontStyle* fontStyle = nullptr; + }; + static wi::unordered_map glyph_lookup; + static wi::unordered_map rect_lookup; + struct SDF + { + static constexpr int padding = 5; + static constexpr unsigned char onedge_value = 180; + static constexpr float pixel_dist_scale = float(onedge_value) / float(padding); + int width; + int height; + int xoff; + int yoff; + wi::vector bitmap; + }; + static wi::unordered_map sdf_lookup; + // pack glyph identifiers to a 32-bit hash: + // height: 10 bits (height supported: 0 - 1023) + // style: 6 bits (number of font styles supported: 0 - 63) + // code: 16 bits (character code range supported: 0 - 65535) + constexpr int32_t glyphhash(int code, int style, int height) { return ((code & 0xFFFF) << 16) | ((style & 0x3F) << 10) | (height & 0x3FF); } + constexpr int codefromhash(int64_t hash) { return int((hash >> 16) & 0xFFFF); } + constexpr int stylefromhash(int64_t hash) { return int((hash >> 10) & 0x3F); } + constexpr int heightfromhash(int64_t hash) { return int((hash >> 0) & 0x3FF); } + static wi::unordered_set pendingGlyphs; + static wi::SpinLock glyphLock; struct ParseStatus { @@ -121,15 +122,11 @@ namespace wi::font }; static thread_local wi::vector vertexList; - - template - ParseStatus ParseText(const T* text, size_t text_length, Params params) + ParseStatus ParseText(const wchar_t* text, size_t text_length, const Params& params) { ParseStatus status; status.cursor = params.cursor; - const FontStyle& fontStyle = fontStyles[params.style]; - const float fontScale = stbtt_ScaleForPixelHeight(&fontStyle.fontInfo, (float)params.size); vertexList.clear(); auto word_wrap = [&] { @@ -145,14 +142,15 @@ namespace wi::font } status.cursor.position.x -= word_offset; status.cursor.position.y += LINEBREAK_SIZE; + status.cursor.size.x = std::max(status.cursor.size.x, status.cursor.position.x); + status.cursor.size.y = std::max(status.cursor.size.y, status.cursor.position.y + LINEBREAK_SIZE); } }; status.cursor.size.y = status.cursor.position.y + LINEBREAK_SIZE; for (size_t i = 0; i < text_length; ++i) { - T character = text[i]; - int code = (int)character; + int code = (int)text[i]; const int32_t hash = glyphhash(code, params.style, params.size); if (glyph_lookup.count(hash) == 0) @@ -186,6 +184,7 @@ namespace wi::font const float glyphHeight = glyph.height; const float glyphOffsetX = glyph.x; const float glyphOffsetY = glyph.y; + const float fontScale = stbtt_ScaleForPixelHeight(&glyph.fontStyle->fontInfo, (float)params.size); const size_t vertexID = size_t(status.quadCount) * 4; vertexList.resize(vertexID + 4); @@ -213,7 +212,7 @@ namespace wi::font vertexList[vertexID + 3].uv = float2(glyph.tc_right, glyph.tc_bottom); int advance, lsb; - stbtt_GetCodepointHMetrics(&fontStyle.fontInfo, code, &advance, &lsb); + stbtt_GetCodepointHMetrics(&glyph.fontStyle->fontInfo, code, &advance, &lsb); status.cursor.position.x += advance * fontScale; status.cursor.position.x += params.spacingX; @@ -221,7 +220,7 @@ namespace wi::font if (text_length > 1 && i < text_length - 1 && text[i + 1]) { int code_next = (int)text[i + 1]; - int kern = stbtt_GetCodepointKernAdvance(&fontStyle.fontInfo, code, code_next); + int kern = stbtt_GetCodepointKernAdvance(&glyph.fontStyle->fontInfo, code, code_next); status.cursor.position.x += kern * fontScale; } } @@ -234,6 +233,17 @@ namespace wi::font return status; } + + thread_local static std::string char_temp_buffer; + thread_local static std::wstring wchar_temp_buffer; + ParseStatus ParseText(const char* text, size_t text_length, const Params& params) + { + // the temp buffers are used to avoid allocations of string objects: + char_temp_buffer = text; + wi::helper::StringConvert(char_temp_buffer, wchar_temp_buffer); + return ParseText(wchar_temp_buffer.c_str(), wchar_temp_buffer.length(), params); + } + void CommitText(void* vertexList_GPU) { std::memcpy(vertexList_GPU, vertexList.data(), sizeof(FontVertex) * vertexList.size()); @@ -288,7 +298,7 @@ namespace wi::font bd.render_target[0].src_blend = Blend::SRC_ALPHA; bd.render_target[0].dest_blend = Blend::INV_SRC_ALPHA; bd.render_target[0].blend_op = BlendOp::ADD; - bd.render_target[0].src_blend_alpha = Blend::SRC_ALPHA; + bd.render_target[0].src_blend_alpha = Blend::ONE; bd.render_target[0].dest_blend_alpha = Blend::INV_SRC_ALPHA; bd.render_target[0].blend_op_alpha = BlendOp::ADD; bd.render_target[0].render_target_write_mask = ColorWrite::ENABLE_ALL; @@ -321,18 +331,30 @@ namespace wi::font for (int32_t hash : pendingGlyphs) { const int code = codefromhash(hash); - const int style = stylefromhash(hash); + int style = stylefromhash(hash); const float height = (float)heightfromhash(hash); - FontStyle& fontStyle = fontStyles[style]; + FontStyle* fontStyle = fontStyles[style].get(); + int glyphIndex = stbtt_FindGlyphIndex(&fontStyle->fontInfo, code); + if (glyphIndex == 0) + { + // Try fallback to an other font style that has this character: + style = 0; + while (glyphIndex == 0 && style < fontStyles.size()) + { + fontStyle = fontStyles[style].get(); + glyphIndex = stbtt_FindGlyphIndex(&fontStyle->fontInfo, code); + style++; + } + } - float fontScaling = stbtt_ScaleForPixelHeight(&fontStyle.fontInfo, height); + float fontScaling = stbtt_ScaleForPixelHeight(&fontStyle->fontInfo, height); SDF& sdf = sdf_lookup[hash]; sdf.width = 0; sdf.height = 0; sdf.xoff = 0; sdf.yoff = 0; - unsigned char* bitmap = stbtt_GetCodepointSDF(&fontStyle.fontInfo, fontScaling, code, sdf.padding, sdf.onedge_value, sdf.pixel_dist_scale, &sdf.width, &sdf.height, &sdf.xoff, &sdf.yoff); + unsigned char* bitmap = stbtt_GetGlyphSDF(&fontStyle->fontInfo, fontScaling, glyphIndex, sdf.padding, sdf.onedge_value, sdf.pixel_dist_scale, &sdf.width, &sdf.height, &sdf.xoff, &sdf.yoff); sdf.bitmap.resize(sdf.width * sdf.height); std::memcpy(sdf.bitmap.data(), bitmap, sdf.bitmap.size()); stbtt_FreeSDF(bitmap, nullptr); @@ -345,9 +367,10 @@ namespace wi::font Glyph& glyph = glyph_lookup[hash]; glyph.x = float(sdf.xoff); - glyph.y = float(sdf.yoff) + float(fontStyle.ascent) * fontScaling; + glyph.y = float(sdf.yoff) + float(fontStyle->ascent) * fontScaling; glyph.width = float(sdf.width); glyph.height = float(sdf.height); + glyph.fontStyle = fontStyle; } pendingGlyphs.clear(); @@ -379,7 +402,6 @@ namespace wi::font const wchar_t code = codefromhash(hash); const int style = stylefromhash(hash); const float height = (float)heightfromhash(hash); - const FontStyle& fontStyle = fontStyles[style]; Glyph& glyph = glyph_lookup[hash]; SDF& sdf = sdf_lookup[hash]; @@ -420,28 +442,28 @@ namespace wi::font { for (size_t i = 0; i < fontStyles.size(); i++) { - const FontStyle& fontStyle = fontStyles[i]; + const FontStyle& fontStyle = *fontStyles[i]; if (!fontStyle.name.compare(fontName)) { return int(i); } } - fontStyles.emplace_back(); - fontStyles.back().Create(fontName); + fontStyles.push_back(std::make_unique()); + fontStyles.back()->Create(fontName); return int(fontStyles.size() - 1); } int AddFontStyle(const std::string& fontName, const uint8_t* data, size_t size) { for (size_t i = 0; i < fontStyles.size(); i++) { - const FontStyle& fontStyle = fontStyles[i]; + const FontStyle& fontStyle = *fontStyles[i]; if (!fontStyle.name.compare(fontName)) { return int(i); } } - fontStyles.emplace_back(); - fontStyles.back().Create(fontName, data, size); + fontStyles.push_back(std::make_unique()); + fontStyles.back()->Create(fontName, data, size); return int(fontStyles.size() - 1); } diff --git a/WickedEngine/wiFont.h b/WickedEngine/wiFont.h index 338e4c2c5..3e8ccba80 100644 --- a/WickedEngine/wiFont.h +++ b/WickedEngine/wiFont.h @@ -48,7 +48,7 @@ namespace wi::font wi::Color shadowColor; // transparent disables, any other color enables shadow under text float h_wrap = -1; // wrap start width (-1 default for no wrap) (logical canvas units) int style = 0; // 0: use default font style, other values can be taken from the wi::font::AddFontStyle() funtion's return value - float softness = 0.1f; // value in [0,1] range + float softness = 0.08f; // value in [0,1] range float bolden = 0; // value in [0,1] range float shadow_softness = 0.5f; // value in [0,1] range float shadow_bolden = 0.1f; // value in [0,1] range @@ -99,6 +99,26 @@ namespace wi::font color(color), shadowColor(shadowColor) {} + + Params( + wi::Color color, + wi::Color shadowColor = wi::Color(0, 0, 0, 0), + float softness = 0.08f, + float bolden = 0, + float shadow_softness = 0.5f, + float shadow_bolden = 0.1f, + float shadow_offset_x = 0, + float shadow_offset_y = 0 + ) : + color(color), + shadowColor(shadowColor), + softness(softness), + bolden(bolden), + shadow_softness(shadow_softness), + shadow_bolden(shadow_bolden), + shadow_offset_x(shadow_offset_x), + shadow_offset_y(shadow_offset_y) + {} }; // Initializes the font renderer diff --git a/WickedEngine/wiGUI.cpp b/WickedEngine/wiGUI.cpp index debd8ac6f..46decebbd 100644 --- a/WickedEngine/wiGUI.cpp +++ b/WickedEngine/wiGUI.cpp @@ -72,8 +72,9 @@ namespace wi::gui uint32_t priority = 0; focus = false; - for (auto& widget : widgets) + for (size_t i = 0; i < widgets.size(); ++i) { + Widget* widget = widgets[i]; // re index in loop, because widgets can be resized while updating! widget->force_disable = focus; widget->Update(canvas, dt); widget->force_disable = false; @@ -196,7 +197,7 @@ namespace wi::gui sprites[FOCUS].params.color = wi::Color::Gray(); sprites[ACTIVE].params.color = wi::Color::White(); sprites[DEACTIVATING].params.color = wi::Color::Gray(); - font.params.shadowColor = wi::Color::Black(); + font.params.shadowColor = wi::Color::Shadow(); font.params.shadow_bolden = 0.2f; font.params.shadow_softness = 0.2f; @@ -223,17 +224,6 @@ namespace wi::gui state = IDLE; } - hitBox = Hitbox2D(XMFLOAT2(translation.x, translation.y), XMFLOAT2(scale.x, scale.y)); - - if (!force_disable && GetState() != WIDGETSTATE::ACTIVE && !tooltip.empty() && GetPointerHitbox().intersects(hitBox)) - { - tooltipTimer++; - } - else - { - tooltipTimer = 0; - } - UpdateTransform(); if (parent != nullptr) @@ -262,6 +252,17 @@ namespace wi::gui } font.params.posX = translation.x; font.params.posY = translation.y; + + hitBox = Hitbox2D(XMFLOAT2(translation.x, translation.y), XMFLOAT2(scale.x, scale.y)); + + if (!force_disable && GetState() != WIDGETSTATE::ACTIVE && !tooltipFont.text.empty() && GetPointerHitbox().intersects(hitBox)) + { + tooltipTimer++; + } + else + { + tooltipTimer = 0; + } } void Widget::RenderTooltip(const wi::Canvas& canvas, CommandList cmd) const { @@ -275,19 +276,21 @@ namespace wi::gui float screenwidth = canvas.GetLogicalWidth(); float screenheight = canvas.GetLogicalHeight(); - wi::font::Params fontProps = wi::font::Params(0, 0, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP); - fontProps.color = wi::Color(25, 25, 25, 255); - wi::SpriteFont tooltipFont = wi::SpriteFont(tooltip, fontProps); - if (!scriptTip.empty()) - { - tooltipFont.SetText(tooltip + "\n" + scriptTip); - } + tooltipFont.params = wi::font::Params(0, 0, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_TOP); + tooltipFont.params.color = wi::Color(25, 25, 25, 255); static const float _border = 2; XMFLOAT2 textSize = tooltipFont.TextSize(); float textWidth = textSize.x + _border * 2; float textHeight = textSize.y + _border * 2; + if (!scripttipFont.text.empty()) + { + XMFLOAT2 scriptTipSize = scripttipFont.TextSize(); + textWidth = std::max(textWidth, scriptTipSize.x); + textHeight += scriptTipSize.y; + } + XMFLOAT2 pointer = GetPointerHitbox().pos; tooltipFont.params.posX = pointer.x; tooltipFont.params.posY = pointer.y; @@ -313,14 +316,13 @@ namespace wi::gui wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(tooltipFont.params.posX - _border, tooltipFont.params.posY - _border, textWidth, textHeight, wi::Color(255, 234, 165)), cmd); - tooltipFont.SetText(tooltip); tooltipFont.Draw(cmd); - if (!scriptTip.empty()) + if (!scripttipFont.text.empty()) { - tooltipFont.SetText(scriptTip); - tooltipFont.params.posY += (int)(textHeight / 2); - tooltipFont.params.color = wi::Color(25, 25, 25, 110); - tooltipFont.Draw(cmd); + scripttipFont.params = tooltipFont.params; + scripttipFont.params.posY += (int)(textHeight / 2); + scripttipFont.params.color = wi::Color(25, 25, 25, 110); + scripttipFont.Draw(cmd); } } } @@ -354,19 +356,19 @@ namespace wi::gui } void Widget::SetTooltip(const std::string& value) { - tooltip = value; + tooltipFont.SetText(value); } void Widget::SetTooltip(std::string&& value) { - tooltip = std::move(value); + tooltipFont.SetText(std::move(value)); } void Widget::SetScriptTip(const std::string& value) { - scriptTip = value; + scripttipFont.SetText(value); } void Widget::SetScriptTip(std::string&& value) { - scriptTip = std::move(value); + scripttipFont.SetText(std::move(value)); } void Widget::SetPos(const XMFLOAT2& value) { @@ -386,6 +388,16 @@ namespace wi::gui scale = scale_local; } + XMFLOAT2 Widget::GetPos() const + { + XMFLOAT3 transform_position = TransformComponent::GetPosition(); + return *(XMFLOAT2*)&transform_position; + } + XMFLOAT2 Widget::GetSize() const + { + XMFLOAT3 transform_scale = TransformComponent::GetScale(); + return *(XMFLOAT2*)&transform_scale; + } WIDGETSTATE Widget::GetState() const { return state; @@ -425,36 +437,36 @@ namespace wi::gui state = DEACTIVATING; tooltipTimer = 0; } - void Widget::SetColor(wi::Color color, WIDGETSTATE state) + void Widget::SetColor(wi::Color color, int id) { - if (state == WIDGETSTATE_COUNT) + if (id < 0) { - for (int i = 0; i < WIDGETSTATE_COUNT; ++i) + for (int i = 0; i < arraysize(sprites); ++i) { sprites[i].params.color = color; } } - else + else if(id < arraysize(sprites)) { - sprites[state].params.color = color; + sprites[id].params.color = color; } } wi::Color Widget::GetColor() const { return wi::Color::fromFloat4(sprites[GetState()].params.color); } - void Widget::SetImage(wi::Resource textureResource, WIDGETSTATE state) + void Widget::SetImage(wi::Resource textureResource, int id) { - if (state == WIDGETSTATE_COUNT) + if (id < 0) { - for (int i = 0; i < WIDGETSTATE_COUNT; ++i) + for (int i = 0; i < arraysize(sprites); ++i) { sprites[i].textureResource = textureResource; } } - else + else if (id < arraysize(sprites)) { - sprites[state].textureResource = textureResource; + sprites[id].textureResource = textureResource; } } @@ -585,7 +597,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { hitBox.pos.x = translation.x; hitBox.pos.y = translation.y; @@ -705,6 +717,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font_description.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -714,19 +733,19 @@ namespace wi::gui } void Button::OnClick(std::function func) { - onClick = move(func); + onClick = func; } void Button::OnDragStart(std::function func) { - onDragStart = move(func); + onDragStart = func; } void Button::OnDrag(std::function func) { - onDrag = move(func); + onDrag = func; } void Button::OnDragEnd(std::function func) { - onDragEnd = move(func); + onDragEnd = func; } @@ -742,16 +761,31 @@ namespace wi::gui Widget::Update(canvas, dt); - if (scale.x > scale.y) + float scrollbar_begin; + float scrollbar_end; + float scrollbar_size; + + if (vertical) { - vertical = false; + scrollbar_begin = translation.y; + scrollbar_end = scrollbar_begin + scale.y; + scrollbar_size = scrollbar_end - scrollbar_begin; + scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.x)); + scrollbar_length = std::max(scale.x * 2, scrollbar_size * scrollbar_granularity); + scrollbar_length = std::min(scrollbar_length, scale.y); } else { - vertical = true; + scrollbar_begin = translation.x; + scrollbar_end = scrollbar_begin + scale.x; + scrollbar_size = scrollbar_end - scrollbar_begin; + scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.y)); + scrollbar_length = std::max(scale.y * 2, scrollbar_size * scrollbar_granularity); + scrollbar_length = std::min(scrollbar_length, scale.x); } + scrollbar_length = std::max(0.0f, scrollbar_length); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == FOCUS) { @@ -790,26 +824,6 @@ namespace wi::gui Activate(); } } - float scrollbar_begin; - float scrollbar_end; - float scrollbar_size; - - if (vertical) - { - scrollbar_begin = translation.y; - scrollbar_end = scrollbar_begin + scale.y; - scrollbar_size = scrollbar_end - scrollbar_begin; - scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.x)); - scrollbar_length = std::max(scale.x * 2, scrollbar_size * scrollbar_granularity); - } - else - { - scrollbar_begin = translation.x; - scrollbar_end = scrollbar_begin + scale.x; - scrollbar_size = scrollbar_end - scrollbar_begin; - scrollbar_granularity = std::min(1.0f, scrollbar_size / std::max(1.0f, list_length - scale.y)); - scrollbar_length = std::max(scale.y * 2, scrollbar_size * scrollbar_granularity); - } if (!click_down) { @@ -845,28 +859,28 @@ namespace wi::gui scrollbar_delta = grab_delta + pointerHitbox.pos.x - grab_pos.x; } } - - scrollbar_delta = wi::math::Clamp(scrollbar_delta, 0, scrollbar_size - scrollbar_length); - if (scrollbar_begin < scrollbar_end - scrollbar_length) - { - scrollbar_value = wi::math::InverseLerp(scrollbar_begin, scrollbar_end - scrollbar_length, scrollbar_begin + scrollbar_delta); - } - else - { - scrollbar_value = 0; - } - - list_offset = -scrollbar_value * (list_length - scrollbar_size * (1.0f - overscroll)); } + scrollbar_delta = wi::math::Clamp(scrollbar_delta, 0, scrollbar_size - scrollbar_length); + if (scrollbar_begin < scrollbar_end - scrollbar_length) + { + scrollbar_value = wi::math::InverseLerp(scrollbar_begin, scrollbar_end - scrollbar_length, scrollbar_begin + scrollbar_delta); + } + else + { + scrollbar_value = 0; + } + + list_offset = -scrollbar_value * (list_length - scrollbar_size * (1.0f - overscroll)); + if (vertical) { for (int i = 0; i < arraysize(sprites_knob); ++i) { sprites_knob[i].params.pos.x = translation.x + knob_inset_border.x; sprites_knob[i].params.pos.y = translation.y + knob_inset_border.y + scrollbar_delta; - sprites_knob[i].params.siz.x = scale.x - knob_inset_border.x * 2; - sprites_knob[i].params.siz.y = scrollbar_length - knob_inset_border.y * 2; + sprites_knob[i].params.siz.x = std::max(0.0f, scale.x - knob_inset_border.x * 2); + sprites_knob[i].params.siz.y = std::max(0.0f, scrollbar_length - knob_inset_border.y * 2); } } else @@ -875,8 +889,8 @@ namespace wi::gui { sprites_knob[i].params.pos.x = translation.x + knob_inset_border.x + scrollbar_delta; sprites_knob[i].params.pos.y = translation.y + knob_inset_border.y; - sprites_knob[i].params.siz.x = scrollbar_length - knob_inset_border.x * 2; - sprites_knob[i].params.siz.y = scale.y - knob_inset_border.y * 2; + sprites_knob[i].params.siz.x = std::max(0.0f, scrollbar_length - knob_inset_border.x * 2); + sprites_knob[i].params.siz.y = std::max(0.0f, scale.y - knob_inset_border.y * 2); } } @@ -903,6 +917,22 @@ namespace wi::gui sprites_knob[scrollbar_state].Draw(cmd); } + void ScrollBar::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + + if (id > WIDGET_ID_SCROLLBAR_BEGIN && id < WIDGET_ID_SCROLLBAR_END) + { + if (id >= WIDGET_ID_SCROLLBAR_KNOB_INACTIVE) + { + sprites_knob[id - WIDGET_ID_SCROLLBAR_KNOB_INACTIVE].params.color = color; + } + else if (id >= WIDGET_ID_SCROLLBAR_BASE_IDLE) + { + sprites[id - WIDGET_ID_SCROLLBAR_BASE_IDLE].params.color = color; + } + } + } @@ -964,17 +994,20 @@ namespace wi::gui scrollbar.SetSize(XMFLOAT2(scrollbar_width, scale.y)); scrollbar.Update(canvas, dt); - Hitbox2D pointerHitbox = GetPointerHitbox(); - if (scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) + if (IsEnabled() && dt > 0) { - scroll_allowed = false; - state = FOCUS; - // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus - scrollbar.Scroll(wi::input::GetPointer().z * 20); - } - else - { - state = IDLE; + Hitbox2D pointerHitbox = GetPointerHitbox(); + if (scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) + { + scroll_allowed = false; + state = FOCUS; + // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus + scrollbar.Scroll(wi::input::GetPointer().z * 20); + } + else + { + state = IDLE; + } } if (scrollbar.IsScrollbarRequired()) @@ -991,6 +1024,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + wi::Color color = GetColor(); ApplyScissor(canvas, scissorRect, cmd); @@ -1000,6 +1040,11 @@ namespace wi::gui scrollbar.Render(canvas, cmd); } + void Label::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + scrollbar.SetColor(color, id); + } @@ -1046,7 +1091,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { hitBox.pos.x = translation.x; hitBox.pos.y = translation.y; @@ -1145,6 +1190,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font_description.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1163,7 +1215,7 @@ namespace wi::gui } void TextInputField::OnInputAccepted(std::function func) { - onInputAccepted = move(func); + onInputAccepted = func; } void TextInputField::AddInput(const char inputChar) { @@ -1198,6 +1250,7 @@ namespace wi::gui SetSize(XMFLOAT2(200, 40)); valueInputField.Create(name + "_endInputField"); + valueInputField.SetShadowRadius(0); valueInputField.SetTooltip("Enter number to modify value even outside slider limits. Enter \"reset\" to reset slider to initial state."); valueInputField.SetValue(end); valueInputField.OnInputAccepted([this, start, end, defaultValue](EventArgs args) { @@ -1255,13 +1308,13 @@ namespace wi::gui Widget::Update(canvas, dt); valueInputField.Detach(); - valueInputField.SetSize(XMFLOAT2(std::max(scale.y * 2, wi::font::TextWidth(valueInputField.GetText(), valueInputField.font.params) + 4), scale.y)); - valueInputField.SetPos(XMFLOAT2(translation.x + scale.x + 2, translation.y)); + valueInputField.SetSize(XMFLOAT2(std::max(scale.y, wi::font::TextWidth(valueInputField.GetText(), valueInputField.font.params) + 4), scale.y)); + valueInputField.SetPos(XMFLOAT2(translation.x + scale.x + 1, translation.y)); valueInputField.AttachTo(this); scissorRect.bottom = (int32_t)std::ceil(translation.y + scale.y); scissorRect.left = (int32_t)std::floor(translation.x); - scissorRect.right = (int32_t)std::ceil(translation.x + scale.x + 20 + scale.y * 2); // include the valueInputField + scissorRect.right = (int32_t)std::ceil(translation.x + scale.x + 1 + valueInputField.GetSize().x); scissorRect.top = (int32_t)std::floor(translation.y); for (int i = 0; i < WIDGETSTATE_COUNT; ++i) @@ -1275,7 +1328,7 @@ namespace wi::gui valueInputField.force_disable = force_disable; valueInputField.Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { bool dragged = false; @@ -1367,6 +1420,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + 1 + valueInputField.GetSize().x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1377,6 +1437,7 @@ namespace wi::gui // knob sprites_knob[state].Draw(cmd); + // input field valueInputField.Render(canvas, cmd); } void Slider::RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const @@ -1386,7 +1447,24 @@ namespace wi::gui } void Slider::OnSlide(std::function func) { - onSlide = move(func); + onSlide = func; + } + void Slider::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + valueInputField.SetColor(color, id); + + if (id > WIDGET_ID_SLIDER_BEGIN && id < WIDGET_ID_SLIDER_END) + { + if (id >= WIDGET_ID_SLIDER_KNOB_IDLE) + { + sprites_knob[id - WIDGET_ID_SLIDER_KNOB_IDLE].params.color = color; + } + else if (id >= WIDGET_ID_SLIDER_BASE_IDLE) + { + sprites[id - WIDGET_ID_SLIDER_BASE_IDLE].params.color = color; + } + } } @@ -1418,7 +1496,7 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == FOCUS) @@ -1490,6 +1568,13 @@ namespace wi::gui return; } + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + font.Draw(cmd); ApplyScissor(canvas, scissorRect, cmd); @@ -1506,7 +1591,7 @@ namespace wi::gui } void CheckBox::OnClick(std::function func) { - onClick = move(func); + onClick = func; } void CheckBox::SetCheck(bool value) { @@ -1531,10 +1616,21 @@ namespace wi::gui font.params.h_align = wi::font::WIFALIGN_RIGHT; font.params.v_align = wi::font::WIFALIGN_CENTER; } - float ComboBox::GetItemOffset(int index) const + float ComboBox::GetDropOffset(const wi::Canvas& canvas) const + { + float screenheight = canvas.GetLogicalHeight(); + int visible_items = std::min(maxVisibleItemCount, int(items.size()) - firstItemVisible); + float total_height = (visible_items + 1) * scale.y; + if (translation.y + total_height > screenheight) + { + return -total_height - 1; + } + return 1; + } + float ComboBox::GetItemOffset(const wi::Canvas& canvas, int index) const { index = std::max(firstItemVisible, index) - firstItemVisible; - return scale.y * (index + 1) + 1; + return scale.y * (index + 1) + GetDropOffset(canvas); } bool ComboBox::HasScrollbar() const { @@ -1549,8 +1645,9 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { + float drop_offset = GetDropOffset(canvas); if (state == FOCUS) { @@ -1610,7 +1707,7 @@ namespace wi::gui Activate(); } - const float scrollbar_begin = translation.y + scale.y + 1 + scale.y * 0.5f; + const float scrollbar_begin = translation.y + scale.y + drop_offset + scale.y * 0.5f; const float scrollbar_end = scrollbar_begin + std::max(0.0f, (float)std::min(maxVisibleItemCount, (int)items.size()) - 1) * scale.y; if (state == ACTIVE) @@ -1620,7 +1717,7 @@ namespace wi::gui { if (combostate != COMBOSTATE_SELECTING && combostate != COMBOSTATE_INACTIVE) { - if (combostate == COMBOSTATE_SCROLLBAR_GRABBED || pointerHitbox.intersects(Hitbox2D(XMFLOAT2(translation.x + scale.x + 1, translation.y + scale.y + 1), XMFLOAT2(scale.y, (float)std::min(maxVisibleItemCount, (int)items.size()) * scale.y)))) + if (combostate == COMBOSTATE_SCROLLBAR_GRABBED || pointerHitbox.intersects(Hitbox2D(XMFLOAT2(translation.x + scale.x + 1, translation.y + scale.y + drop_offset), XMFLOAT2(scale.y, (float)std::min(maxVisibleItemCount, (int)items.size()) * scale.y)))) { if (click_down) { @@ -1668,7 +1765,7 @@ namespace wi::gui { Hitbox2D itembox; itembox.pos.x = translation.x; - itembox.pos.y = translation.y + GetItemOffset(i); + itembox.pos.y = translation.y + GetItemOffset(canvas, i); itembox.siz.x = scale.x; itembox.siz.y = scale.y; if (pointerHitbox.intersects(itembox)) @@ -1701,6 +1798,13 @@ namespace wi::gui } GraphicsDevice* device = wi::graphics::GetDevice(); + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + 1 + scale.y + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + wi::Color color = GetColor(); if (combostate != COMBOSTATE_INACTIVE) { @@ -1730,6 +1834,8 @@ namespace wi::gui } const XMMATRIX Projection = canvas.GetProjection(); + float drop_offset = GetDropOffset(canvas); + // control-arrow-background wi::image::Params fx = sprites[state].params; fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y, 0); @@ -1743,7 +1849,7 @@ namespace wi::gui MiscCB cb; cb.g_xColor = sprites[ACTIVE].params.color; XMStoreFloat4x4(&cb.g_xTransform, XMMatrixScaling(scale.y * 0.25f, scale.y * 0.25f, 1) * - XMMatrixRotationZ(XM_PIDIV2) * + XMMatrixRotationZ(drop_offset < 0 ? -XM_PIDIV2 : XM_PIDIV2) * XMMatrixTranslation(translation.x + scale.x + 1 + scale.y * 0.5f, translation.y + scale.y * 0.5f, 0) * Projection ); @@ -1766,28 +1872,38 @@ namespace wi::gui if (selected >= 0) { - wi::font::Draw(items[selected].name, wi::font::Params(translation.x + scale.x * 0.5f, translation.y + scale.y * 0.5f, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_CENTER, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + wi::font::Params fp = wi::font::Params( + translation.x + scale.x * 0.5f, + translation.y + scale.y * 0.5f, + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_CENTER, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(items[selected].name, fp, cmd); } // drop-down if (state == ACTIVE) { + if (HasScrollbar()) { Rect rect; rect.left = int(translation.x + scale.x + 1); rect.right = int(translation.x + scale.x + 1 + scale.y); - rect.top = int(translation.y + scale.y + 1); - rect.bottom = int(translation.y + scale.y + 1 + scale.y * maxVisibleItemCount); + rect.top = int(translation.y + scale.y + drop_offset); + rect.bottom = int(translation.y + scale.y + drop_offset + scale.y * maxVisibleItemCount); ApplyScissor(canvas, rect, cmd, false); // control-scrollbar-base { fx = sprites[state].params; - fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y + scale.y + 1, 0); + fx.pos = XMFLOAT3(translation.x + scale.x + 1, translation.y + scale.y + drop_offset, 0); fx.siz = XMFLOAT2(scale.y, scale.y * maxVisibleItemCount); - fx.color = wi::math::Lerp(wi::Color::Transparent(), sprites[IDLE].params.color, 0.5f); + fx.color = drop_color; wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); } @@ -1802,15 +1918,24 @@ namespace wi::gui { col = wi::Color::fromFloat4(sprites[ACTIVE].params.color); } - wi::image::Draw(wi::texturehelper::getWhite() - , wi::image::Params(translation.x + scale.x + 1, translation.y + scale.y + 1 + scrollbar_delta, scale.y, scale.y, col), cmd); + wi::image::Draw( + wi::texturehelper::getWhite(), + wi::image::Params( + translation.x + scale.x + 1, + translation.y + scale.y + drop_offset + scrollbar_delta, + scale.y, + scale.y, + col + ), + cmd + ); } } Rect rect; rect.left = int(translation.x); rect.right = rect.left + int(scale.x); - rect.top = int(translation.y + scale.y + 1); + rect.top = int(translation.y + scale.y + drop_offset); rect.bottom = rect.top + int(scale.y * maxVisibleItemCount); ApplyScissor(canvas, rect, cmd, false); @@ -1818,9 +1943,9 @@ namespace wi::gui for (int i = firstItemVisible; i < (firstItemVisible + std::min(maxVisibleItemCount, (int)items.size())); ++i) { fx = sprites[state].params; - fx.pos = XMFLOAT3(translation.x, translation.y + GetItemOffset(i), 0); + fx.pos = XMFLOAT3(translation.x, translation.y + GetItemOffset(canvas, i), 0); fx.siz = XMFLOAT2(scale.x, scale.y); - fx.color = wi::math::Lerp(wi::Color::Transparent(), sprites[IDLE].params.color, 0.5f); + fx.color = drop_color; if (hovered == i) { if (combostate == COMBOSTATE_HOVER) @@ -1833,14 +1958,24 @@ namespace wi::gui } } wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); - wi::font::Draw(items[i].name, wi::font::Params(translation.x + scale.x * 0.5f, translation.y + scale.y * 0.5f + GetItemOffset(i), wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_CENTER, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + + wi::font::Params fp = wi::font::Params( + translation.x + scale.x * 0.5f, + translation.y + scale.y * 0.5f + GetItemOffset(canvas, i), + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_CENTER, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(items[i].name, fp, cmd); } } } void ComboBox::OnSelect(std::function func) { - onSelect = move(func); + onSelect = func; } void ComboBox::AddItem(const std::string& name, uint64_t userdata) { @@ -1952,14 +2087,22 @@ namespace wi::gui { return selected; } + void ComboBox::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + + if (id == WIDGET_ID_COMBO_DROPDOWN) + { + drop_color = color; + } + } - static const float windowcontrolSize = 20.0f; - void Window::Create(const std::string& name, bool window_controls) + void Window::Create(const std::string& name, WindowControls window_controls) { SetColor(wi::Color::Ghost()); @@ -1973,11 +2116,14 @@ namespace wi::gui } // Add controls - if (window_controls) + if (has_flag(window_controls, WindowControls::RESIZE_TOPLEFT)) { // Add a resizer control to the upperleft corner resizeDragger_UpperLeft.Create(name + "_resize_dragger_upper_left"); - resizeDragger_UpperLeft.SetText(""); + resizeDragger_UpperLeft.SetShadowRadius(0); + resizeDragger_UpperLeft.SetTooltip("Resize window"); + resizeDragger_UpperLeft.SetText("«|»"); + resizeDragger_UpperLeft.font.params.rotation = XM_PIDIV4; resizeDragger_UpperLeft.OnDrag([this](EventArgs args) { auto saved_parent = this->parent; this->Detach(); @@ -1986,14 +2132,64 @@ namespace wi::gui scaleDiff.y = (scale.y - args.deltaPos.y) / scale.y; this->Translate(XMFLOAT3(args.deltaPos.x, args.deltaPos.y, 0)); this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); - this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(windowcontrolSize * 3, windowcontrolSize * 2, 1)); // don't allow resize to negative or too small + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small this->AttachTo(saved_parent); }); - AddWidget(&resizeDragger_UpperLeft); + AddWidget(&resizeDragger_UpperLeft, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::RESIZE_TOPRIGHT)) + { + // Add a resizer control to the upperleft corner + resizeDragger_UpperRight.Create(name + "_resize_dragger_upper_right"); + resizeDragger_UpperRight.SetShadowRadius(0); + resizeDragger_UpperRight.SetTooltip("Resize window"); + resizeDragger_UpperRight.SetText("«|»"); + resizeDragger_UpperRight.font.params.rotation = XM_PIDIV4 * 3; + resizeDragger_UpperRight.OnDrag([this](EventArgs args) { + auto saved_parent = this->parent; + this->Detach(); + XMFLOAT2 scaleDiff; + scaleDiff.x = (scale.x + args.deltaPos.x) / scale.x; + scaleDiff.y = (scale.y - args.deltaPos.y) / scale.y; + this->Translate(XMFLOAT3(0, args.deltaPos.y, 0)); + this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small + this->AttachTo(saved_parent); + }); + AddWidget(&resizeDragger_UpperRight, AttachmentOptions::NONE); + } + + if (has_flag(window_controls, WindowControls::RESIZE_BOTTOMLEFT)) + { + // Add a resizer control to the bottom right corner + resizeDragger_BottomLeft.Create(name + "_resize_dragger_bottom_left"); + resizeDragger_BottomLeft.SetShadowRadius(0); + resizeDragger_BottomLeft.SetTooltip("Resize window"); + resizeDragger_BottomLeft.SetText("«|»"); + resizeDragger_BottomLeft.font.params.rotation = XM_PIDIV4 * 3; + resizeDragger_BottomLeft.OnDrag([this](EventArgs args) { + auto saved_parent = this->parent; + this->Detach(); + XMFLOAT2 scaleDiff; + scaleDiff.x = (scale.x - args.deltaPos.x) / scale.x; + scaleDiff.y = (scale.y + args.deltaPos.y) / scale.y; + this->Translate(XMFLOAT3(args.deltaPos.x, 0, 0)); + this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small + this->AttachTo(saved_parent); + }); + AddWidget(&resizeDragger_BottomLeft, AttachmentOptions::NONE); + } + + if (has_flag(window_controls, WindowControls::RESIZE_BOTTOMRIGHT)) + { // Add a resizer control to the bottom right corner resizeDragger_BottomRight.Create(name + "_resize_dragger_bottom_right"); - resizeDragger_BottomRight.SetText(""); + resizeDragger_BottomRight.SetShadowRadius(0); + resizeDragger_BottomRight.SetTooltip("Resize window"); + resizeDragger_BottomRight.SetText("«|»"); + resizeDragger_BottomRight.font.params.rotation = XM_PIDIV4; resizeDragger_BottomRight.OnDrag([this](EventArgs args) { auto saved_parent = this->parent; this->Detach(); @@ -2001,13 +2197,17 @@ namespace wi::gui scaleDiff.x = (scale.x + args.deltaPos.x) / scale.x; scaleDiff.y = (scale.y + args.deltaPos.y) / scale.y; this->Scale(XMFLOAT3(scaleDiff.x, scaleDiff.y, 1)); - this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(windowcontrolSize * 3, windowcontrolSize * 2, 1)); // don't allow resize to negative or too small + this->scale_local = wi::math::Max(this->scale_local, XMFLOAT3(control_size * 3, control_size * 2, 1)); // don't allow resize to negative or too small this->AttachTo(saved_parent); }); - AddWidget(&resizeDragger_BottomRight); + AddWidget(&resizeDragger_BottomRight, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::MOVE)) + { // Add a grabber onto the title bar moveDragger.Create(name + "_move_dragger"); + moveDragger.SetShadowRadius(0); moveDragger.SetText(name); moveDragger.font.params.h_align = wi::font::WIFALIGN_LEFT; moveDragger.OnDrag([this](EventArgs args) { @@ -2016,35 +2216,54 @@ namespace wi::gui this->Translate(XMFLOAT3(args.deltaPos.x, args.deltaPos.y, 0)); this->AttachTo(saved_parent); }); - AddWidget(&moveDragger); + AddWidget(&moveDragger, AttachmentOptions::NONE); + } + if (has_flag(window_controls, WindowControls::CLOSE)) + { // Add close button to the top right corner closeButton.Create(name + "_close_button"); + closeButton.SetShadowRadius(0); closeButton.SetText("x"); closeButton.OnClick([this](EventArgs args) { this->SetVisible(false); + if (onClose) + { + onClose(args); + } }); closeButton.SetTooltip("Close window"); - AddWidget(&closeButton); - - // Add minimize button to the top right corner - minimizeButton.Create(name + "_minimize_button"); - minimizeButton.SetText("-"); - minimizeButton.OnClick([this](EventArgs args) { - this->SetMinimized(!this->IsMinimized()); - }); - minimizeButton.SetTooltip("Minimize window"); - AddWidget(&minimizeButton); + AddWidget(&closeButton, AttachmentOptions::NONE); } - else + + if (has_flag(window_controls, WindowControls::COLLAPSE)) + { + // Add minimize button to the top right corner + collapseButton.Create(name + "_collapse_button"); + collapseButton.SetShadowRadius(0); + collapseButton.SetText("-"); + collapseButton.OnClick([this](EventArgs args) { + this->SetMinimized(!this->IsMinimized()); + if (onCollapse) + { + onCollapse({}); + } + }); + collapseButton.SetTooltip("Collapse/Expand window"); + AddWidget(&collapseButton, AttachmentOptions::NONE); + } + + if (!has_flag(window_controls, WindowControls::MOVE)) { // Simple title bar label.Create(name); + label.SetShadowRadius(0); label.SetText(name); label.font.params.h_align = wi::font::WIFALIGN_LEFT; - AddWidget(&label); + AddWidget(&label, AttachmentOptions::NONE); } + scrollbar_horizontal.SetVertical(false); scrollbar_horizontal.SetColor(wi::Color(80, 80, 80, 100), wi::gui::IDLE); scrollbar_horizontal.sprites_knob[ScrollBar::SCROLLBAR_INACTIVE].params.color = wi::Color(140, 140, 140, 140); scrollbar_horizontal.sprites_knob[ScrollBar::SCROLLBAR_HOVER].params.color = wi::Color(180, 180, 180, 180); @@ -2052,6 +2271,7 @@ namespace wi::gui scrollbar_horizontal.knob_inset_border = XMFLOAT2(2, 4); AddWidget(&scrollbar_horizontal); + scrollbar_vertical.SetVertical(true); scrollbar_vertical.SetColor(wi::Color(80, 80, 80, 100), wi::gui::IDLE); scrollbar_vertical.sprites_knob[ScrollBar::SCROLLBAR_INACTIVE].params.color = wi::Color(140, 140, 140, 140); scrollbar_vertical.sprites_knob[ScrollBar::SCROLLBAR_HOVER].params.color = wi::Color(180, 180, 180, 180); @@ -2066,11 +2286,11 @@ namespace wi::gui SetVisible(true); SetMinimized(false); } - void Window::AddWidget(Widget* widget, bool scrollable) + void Window::AddWidget(Widget* widget, AttachmentOptions options) { widget->SetEnabled(this->IsEnabled()); widget->SetVisible(this->IsVisible()); - if (scrollable) + if (has_flag(options, AttachmentOptions::SCROLLABLE)) { widget->AttachTo(&scrollable_area); } @@ -2106,12 +2326,16 @@ namespace wi::gui moveDragger.force_disable = force_disable; resizeDragger_UpperLeft.force_disable = force_disable; + resizeDragger_UpperRight.force_disable = force_disable; + resizeDragger_BottomLeft.force_disable = force_disable; resizeDragger_BottomRight.force_disable = force_disable; scrollbar_horizontal.force_disable = force_disable; scrollbar_vertical.force_disable = force_disable; moveDragger.Update(canvas, dt); resizeDragger_UpperLeft.Update(canvas, dt); + resizeDragger_UpperRight.Update(canvas, dt); + resizeDragger_BottomLeft.Update(canvas, dt); resizeDragger_BottomRight.Update(canvas, dt); scrollbar_horizontal.Update(canvas, dt); scrollbar_vertical.Update(canvas, dt); @@ -2120,7 +2344,7 @@ namespace wi::gui if (parent == nullptr) { translation_local.x = wi::math::Clamp(translation_local.x, 0, canvas.GetLogicalWidth() - scale_local.x); - translation_local.y = wi::math::Clamp(translation_local.y, 0, canvas.GetLogicalHeight() - windowcontrolSize); + translation_local.y = wi::math::Clamp(translation_local.y, 0, canvas.GetLogicalHeight() - control_size); SetDirty(); } @@ -2129,57 +2353,133 @@ namespace wi::gui if (moveDragger.parent != nullptr) { moveDragger.Detach(); - moveDragger.SetSize(XMFLOAT2(scale.x - windowcontrolSize * 3, windowcontrolSize)); - moveDragger.SetPos(XMFLOAT2(translation.x + windowcontrolSize, translation.y)); + float rem = 0; + if (closeButton.parent != nullptr) + { + rem++; + } + if (collapseButton.parent != nullptr) + { + rem++; + } + if (resizeDragger_UpperLeft.parent != nullptr) + { + rem++; + } + if (resizeDragger_UpperRight.parent != nullptr) + { + rem++; + } + moveDragger.SetSize(XMFLOAT2(scale.x - control_size * rem, control_size)); + float offset = 0; + if (resizeDragger_UpperLeft.parent != nullptr) + { + offset++; + } + moveDragger.SetPos(XMFLOAT2(translation.x + control_size * offset, translation.y)); moveDragger.AttachTo(this); } if (closeButton.parent != nullptr) { closeButton.Detach(); - closeButton.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - closeButton.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y)); + closeButton.SetSize(XMFLOAT2(control_size, control_size)); + float offset = 1; + if (resizeDragger_UpperRight.parent != nullptr) + { + offset++; + } + closeButton.SetPos(XMFLOAT2(translation.x + scale.x - control_size * offset, translation.y)); closeButton.AttachTo(this); } - if (minimizeButton.parent != nullptr) + if (collapseButton.parent != nullptr) { - minimizeButton.Detach(); - minimizeButton.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - minimizeButton.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize * 2, translation.y)); - minimizeButton.AttachTo(this); + collapseButton.Detach(); + collapseButton.SetSize(XMFLOAT2(control_size, control_size)); + float offset = 1; + if (closeButton.parent != nullptr) + { + offset++; + } + if (resizeDragger_UpperRight.parent != nullptr) + { + offset++; + } + collapseButton.SetPos(XMFLOAT2(translation.x + scale.x - control_size * offset, translation.y)); + collapseButton.AttachTo(this); } if (resizeDragger_UpperLeft.parent != nullptr) { resizeDragger_UpperLeft.Detach(); - resizeDragger_UpperLeft.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); + resizeDragger_UpperLeft.SetSize(XMFLOAT2(control_size, control_size)); resizeDragger_UpperLeft.SetPos(XMFLOAT2(translation.x, translation.y)); resizeDragger_UpperLeft.AttachTo(this); } + if (resizeDragger_UpperRight.parent != nullptr) + { + resizeDragger_UpperRight.Detach(); + resizeDragger_UpperRight.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_UpperRight.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y)); + resizeDragger_UpperRight.AttachTo(this); + } + if (resizeDragger_BottomLeft.parent != nullptr) + { + resizeDragger_BottomLeft.Detach(); + resizeDragger_BottomLeft.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_BottomLeft.SetPos(XMFLOAT2(translation.x, translation.y + scale.y - control_size)); + resizeDragger_BottomLeft.AttachTo(this); + } if (resizeDragger_BottomRight.parent != nullptr) { resizeDragger_BottomRight.Detach(); - resizeDragger_BottomRight.SetSize(XMFLOAT2(windowcontrolSize, windowcontrolSize)); - resizeDragger_BottomRight.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y + scale.y - windowcontrolSize)); + resizeDragger_BottomRight.SetSize(XMFLOAT2(control_size, control_size)); + resizeDragger_BottomRight.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y + scale.y - control_size)); resizeDragger_BottomRight.AttachTo(this); } if (label.parent != nullptr) { + label.font.params = font.params; label.Detach(); - label.SetSize(XMFLOAT2(scale.x, windowcontrolSize)); - label.SetPos(XMFLOAT2(translation.x, translation.y)); + XMFLOAT2 label_size = XMFLOAT2(scale.x, control_size); + XMFLOAT2 label_pos = XMFLOAT2(translation.x, translation.y); + if (resizeDragger_UpperLeft.parent != nullptr) + { + label_size.x -= control_size; + label_pos.x += control_size; + } + if (closeButton.parent != nullptr) + { + label_size.x -= control_size; + } + if (collapseButton.parent != nullptr) + { + label_size.x -= control_size; + } + label.SetSize(label_size); + label.SetPos(label_pos); label.AttachTo(this); } if (scrollbar_horizontal.parent != nullptr) { scrollbar_horizontal.Detach(); - scrollbar_horizontal.SetSize(XMFLOAT2(scale.x - windowcontrolSize, windowcontrolSize)); - scrollbar_horizontal.SetPos(XMFLOAT2(translation.x, translation.y + scale.y - windowcontrolSize)); + float offset = 0; + if (resizeDragger_BottomLeft.parent != nullptr) + { + offset++; + } + scrollbar_horizontal.SetSize(XMFLOAT2(scale.x - control_size * (offset + 1), control_size)); + scrollbar_horizontal.SetPos(XMFLOAT2(translation.x + control_size * offset, translation.y + scale.y - control_size)); scrollbar_horizontal.AttachTo(this); } if (scrollbar_vertical.parent != nullptr) { scrollbar_vertical.Detach(); - scrollbar_vertical.SetSize(XMFLOAT2(windowcontrolSize, scale.y - 2 - windowcontrolSize * 2)); - scrollbar_vertical.SetPos(XMFLOAT2(translation.x + scale.x - windowcontrolSize, translation.y + 1 + windowcontrolSize)); + float offset = 1; + if (resizeDragger_BottomRight.parent != nullptr) + { + offset++; + } + scrollbar_vertical.SetSize(XMFLOAT2(control_size, scale.y - (control_size + 1) * offset)); + scrollbar_vertical.SetPos(XMFLOAT2(translation.x + scale.x - control_size, translation.y + 1 + control_size)); scrollbar_vertical.AttachTo(this); } @@ -2196,8 +2496,9 @@ namespace wi::gui continue; if (widget->parent == &scrollable_area) { - scroll_length_horizontal = std::max(scroll_length_horizontal, widget->translation_local.x + widget->scale_local.x); - scroll_length_vertical = std::max(scroll_length_vertical, widget->translation_local.y + widget->scale_local.y); + XMFLOAT2 size = widget->GetSize(); + scroll_length_horizontal = std::max(scroll_length_horizontal, widget->translation_local.x + size.x); + scroll_length_vertical = std::max(scroll_length_vertical, widget->translation_local.y + size.y); } } scrollbar_horizontal.SetListLength(scroll_length_horizontal); @@ -2205,19 +2506,19 @@ namespace wi::gui scrollable_area.Detach(); scrollable_area.ClearTransform(); scrollable_area.Translate(translation); - scrollable_area.Translate(XMFLOAT3(scrollbar_horizontal.GetOffset(), windowcontrolSize + 1 + scrollbar_vertical.GetOffset(), 0)); + scrollable_area.Translate(XMFLOAT3(scrollbar_horizontal.GetOffset(), control_size + 1 + scrollbar_vertical.GetOffset(), 0)); scrollable_area.Update(canvas, dt); scrollable_area.AttachTo(this); scrollable_area.scissorRect = scissorRect; scrollable_area.scissorRect.left += 1; - scrollable_area.scissorRect.top += (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.top += (int32_t)control_size + 1; if (scrollbar_horizontal.parent != nullptr && scrollbar_horizontal.IsScrollbarRequired()) { - scrollable_area.scissorRect.bottom -= (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.bottom -= (int32_t)control_size + 1; } if (scrollbar_vertical.parent != nullptr && scrollbar_vertical.IsScrollbarRequired()) { - scrollable_area.scissorRect.right -= (int32_t)windowcontrolSize + 1; + scrollable_area.scissorRect.right -= (int32_t)control_size + 1; } scrollable_area.active_area.pos.x = float(scrollable_area.scissorRect.left); scrollable_area.active_area.pos.y = float(scrollable_area.scissorRect.top); @@ -2226,8 +2527,9 @@ namespace wi::gui bool focus = false; - for (auto& widget : widgets) + for (size_t i = 0; i < widgets.size(); ++i) { + Widget* widget = widgets[i]; // re index in loop, because widgets can be resized while updating! widget->force_disable = force_disable || focus; widget->Update(canvas, dt); widget->force_disable = false; @@ -2264,10 +2566,10 @@ namespace wi::gui if (IsMinimized()) { - hitBox.siz.y = windowcontrolSize; + hitBox.siz.y = control_size; } - if (IsEnabled() && !IsMinimized()) + if (IsEnabled() && !IsMinimized() && dt > 0) { if (state == FOCUS) { @@ -2327,18 +2629,24 @@ namespace wi::gui return; } + GetDevice()->EventBegin(name.c_str(), cmd); + wi::Color color = GetColor(); - // body - wi::image::Params fx(translation.x - 2, translation.y - 2, scale.x + 4, scale.y + 4, wi::Color(0, 0, 0, 100)); - if (IsMinimized()) + // shadow: + if (shadow > 0) { - fx.siz.y = windowcontrolSize + 4; - wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); // shadow + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + if (IsMinimized()) + { + fx.siz.y = control_size + shadow * 2; + } + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); } - else + + // base: + if (!IsCollapsed()) { - wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); // shadow sprites[state].Draw(cmd); } @@ -2367,6 +2675,8 @@ namespace wi::gui //wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(scrollable_area.active_area.pos.x, scrollable_area.active_area.pos.y, scrollable_area.active_area.siz.x, scrollable_area.active_area.siz.y, wi::Color(255,0,255,100)), cmd); //Hitbox2D p = scrollable_area.GetPointerHitbox(); //wi::image::Draw(wi::texturehelper::getWhite(), wi::image::Params(p.pos.x, p.pos.y, p.siz.x * 10, p.siz.y * 10, wi::Color(255,0,0,100)), cmd); + + GetDevice()->EventEnd(cmd); } void Window::RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const { @@ -2379,10 +2689,13 @@ namespace wi::gui void Window::SetVisible(bool value) { Widget::SetVisible(value); - SetMinimized(!value); - for (auto& x : widgets) + //SetMinimized(!value); + if (!IsMinimized()) { - x->SetVisible(value); + for (auto& x : widgets) + { + x->SetVisible(value); + } } } void Window::SetEnabled(bool value) @@ -2392,12 +2705,16 @@ namespace wi::gui { if (x == &moveDragger) continue; - if (x == &minimizeButton) + if (x == &collapseButton) continue; if (x == &closeButton) continue; if (x == &resizeDragger_UpperLeft) continue; + if (x == &resizeDragger_UpperRight) + continue; + if (x == &resizeDragger_BottomLeft) + continue; if (x == &resizeDragger_BottomRight) continue; if (x == &scrollbar_horizontal) @@ -2407,10 +2724,22 @@ namespace wi::gui x->SetEnabled(value); } } + void Window::SetCollapsed(bool value) + { + SetMinimized(value); + } + bool Window::IsCollapsed() const + { + return IsMinimized(); + } void Window::SetMinimized(bool value) { minimized = value; + if (resizeDragger_BottomLeft.parent != nullptr) + { + resizeDragger_BottomLeft.SetVisible(!value); + } if (resizeDragger_BottomRight.parent != nullptr) { resizeDragger_BottomRight.SetVisible(!value); @@ -2419,19 +2748,87 @@ namespace wi::gui { if (x == &moveDragger) continue; - if (x == &minimizeButton) + if (x == &collapseButton) continue; if (x == &closeButton) continue; if (x == &resizeDragger_UpperLeft) continue; + if (x == &resizeDragger_UpperRight) + continue; + if (x == &label) + continue; x->SetVisible(!value); } + + if (IsMinimized()) + { + collapseButton.SetText("»"); + collapseButton.font.params.rotation = XM_PIDIV2; + } + else + { + collapseButton.SetText("-"); + collapseButton.font.params.rotation = 0; + } } bool Window::IsMinimized() const { return minimized; } + void Window::SetControlSize(float value) + { + control_size = value; + } + float Window::GetControlSize() const + { + return control_size; + } + XMFLOAT2 Window::GetSize() const + { + XMFLOAT2 size = Widget::GetSize(); + if (IsCollapsed()) + { + return XMFLOAT2(size.x, control_size); + } + return size; + } + XMFLOAT2 Window::GetWidgetAreaSize() const + { + XMFLOAT2 size = GetSize(); + if (scrollbar_horizontal.IsScrollbarRequired()) + { + size.y -= control_size; + } + if (scrollbar_vertical.IsScrollbarRequired()) + { + size.x -= control_size; + } + return size; + } + void Window::OnClose(std::function func) + { + onClose = func; + } + void Window::OnCollapse(std::function func) + { + onCollapse = func; + } + void Window::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + for (auto& widget : widgets) + { + widget->SetColor(color, id); + } + + if (id == WIDGET_ID_WINDOW_BASE) + { + sprites[IDLE].params.color = color; + } + } + + @@ -2550,7 +2947,7 @@ namespace wi::gui static const float cp_width = 300; static const float cp_height = 260; - void ColorPicker::Create(const std::string& name, bool window_controls) + void ColorPicker::Create(const std::string& name, WindowControls window_controls) { Window::Create(name, window_controls); @@ -2662,7 +3059,7 @@ namespace wi::gui Window::Update(canvas, dt); - if (IsEnabled()) + if (IsEnabled() && dt > 0) { if (state == DEACTIVATING) @@ -3182,7 +3579,7 @@ namespace wi::gui } void ColorPicker::OnColorChanged(std::function func) { - onColorChanged = move(func); + onColorChanged = func; } @@ -3252,7 +3649,34 @@ namespace wi::gui Widget::Update(canvas, dt); - if (IsEnabled()) + // compute control-list height + float scroll_length = 0; + { + int parent_level = 0; + bool parent_open = true; + for (const Item& item : items) + { + if (!parent_open && item.level > parent_level) + { + continue; + } + parent_open = item.open; + parent_level = item.level; + scroll_length += item_height(); + } + } + scrollbar.SetListLength(scroll_length); + + const float scrollbar_width = 12; + scrollbar.SetSize(XMFLOAT2(scrollbar_width - 1, scale.y - 1 - item_height())); + scrollbar.SetPos(XMFLOAT2(translation.x + 1 + scale.x - scrollbar_width, translation.y + 1 + item_height())); + scrollbar.Update(canvas, dt); + if (scrollbar.GetState() > IDLE) + { + Deactivate(); + } + + if (IsEnabled() && dt > 0) { if (state == FOCUS) { @@ -3292,42 +3716,18 @@ namespace wi::gui } } - // compute control-list height - float scroll_length = 0; - { - int parent_level = 0; - bool parent_open = true; - for (const Item& item : items) - { - if (!parent_open && item.level > parent_level) - { - continue; - } - parent_open = item.open; - parent_level = item.level; - scroll_length += item_height(); - } - } - scrollbar.SetListLength(scroll_length); - float scroll = wi::input::GetPointer().z * 10; - if (scroll && scroll_allowed && scrollbar.IsScrollbarRequired() && GetState() == FOCUS) + if (scroll && scroll_allowed && scrollbar.IsScrollbarRequired() && pointerHitbox.intersects(hitBox)) { scroll_allowed = false; // This is outside scrollbar code, because it can also be scrolled if parent widget is only in focus scrollbar.Scroll(scroll); } - const float scrollbar_width = 12; - scrollbar.SetSize(XMFLOAT2(scrollbar_width - 1, scale.y - 1 - item_height())); - scrollbar.SetPos(XMFLOAT2(translation.x + 1 + scale.x - scrollbar_width, translation.y + 1 + item_height())); - scrollbar.Update(canvas, dt); - if (scrollbar.GetState() > IDLE) - { - Deactivate(); - } Hitbox2D itemlist_box = GetHitbox_ListArea(); + tooltipFont.text.clear(); + // control-list item_highlight = -1; opener_highlight = -1; @@ -3371,6 +3771,7 @@ namespace wi::gui if (name_box.intersects(pointerHitbox)) { item_highlight = i; + SetTooltip(item.name); if (clicked) { if (!wi::input::Down(wi::input::KEYBOARD_BUTTON_LCONTROL) && !wi::input::Down(wi::input::KEYBOARD_BUTTON_RCONTROL) @@ -3399,6 +3800,13 @@ namespace wi::gui } GraphicsDevice* device = wi::graphics::GetDevice(); + // shadow: + if (shadow > 0) + { + wi::image::Params fx(translation.x - shadow, translation.y - shadow, scale.x + shadow * 2, scale.y + shadow * 2, wi::Color::Shadow()); + wi::image::Draw(wi::texturehelper::getWhite(), fx, cmd); + } + // control-base sprites[state].Draw(cmd); @@ -3500,13 +3908,22 @@ namespace wi::gui } // Item name text: - wi::font::Draw(item.name, wi::font::Params(name_box.pos.x + 1, name_box.pos.y + name_box.siz.y * 0.5f, wi::font::WIFONTSIZE_DEFAULT, wi::font::WIFALIGN_LEFT, wi::font::WIFALIGN_CENTER, - font.params.color, font.params.shadowColor), cmd); + wi::font::Params fp = wi::font::Params( + name_box.pos.x + 1, + name_box.pos.y + name_box.siz.y * 0.5f, + wi::font::WIFONTSIZE_DEFAULT, + wi::font::WIFALIGN_LEFT, + wi::font::WIFALIGN_CENTER, + font.params.color, + font.params.shadowColor + ); + fp.style = font.params.style; + wi::font::Draw(item.name, fp, cmd); } } void TreeList::OnSelect(std::function func) { - onSelect = move(func); + onSelect = func; } void TreeList::AddItem(const Item& item) { @@ -3541,6 +3958,11 @@ namespace wi::gui { return items[index]; } + void TreeList::SetColor(wi::Color color, int id) + { + Widget::SetColor(color, id); + scrollbar.SetColor(color, id); + } } diff --git a/WickedEngine/wiGUI.h b/WickedEngine/wiGUI.h index d53de821a..b4333ceb3 100644 --- a/WickedEngine/wiGUI.h +++ b/WickedEngine/wiGUI.h @@ -61,17 +61,63 @@ namespace wi::gui WIDGETSTATE_COUNT, }; + // These can be used to target a setting for a specific widget control and state: + enum WIDGET_ID + { + // IDs for normal widget states: + WIDGET_ID_IDLE = IDLE, + WIDGET_ID_FOCUS = FOCUS, + WIDGET_ID_ACTIVE = ACTIVE, + WIDGET_ID_DEACTIVATING = DEACTIVATING, + + // IDs for special widget states: + + // Slider: + WIDGET_ID_SLIDER_BEGIN, // do not use! + WIDGET_ID_SLIDER_BASE_IDLE, + WIDGET_ID_SLIDER_BASE_FOCUS, + WIDGET_ID_SLIDER_BASE_ACTIVE, + WIDGET_ID_SLIDER_BASE_DEACTIVATING, + WIDGET_ID_SLIDER_KNOB_IDLE, + WIDGET_ID_SLIDER_KNOB_FOCUS, + WIDGET_ID_SLIDER_KNOB_ACTIVE, + WIDGET_ID_SLIDER_KNOB_DEACTIVATING, + WIDGET_ID_SLIDER_END, // do not use! + + // Scrollbar: + WIDGET_ID_SCROLLBAR_BEGIN, // do not use! + WIDGET_ID_SCROLLBAR_BASE_IDLE, + WIDGET_ID_SCROLLBAR_BASE_FOCUS, + WIDGET_ID_SCROLLBAR_BASE_ACTIVE, + WIDGET_ID_SCROLLBAR_BASE_DEACTIVATING, + WIDGET_ID_SCROLLBAR_KNOB_INACTIVE, + WIDGET_ID_SCROLLBAR_KNOB_HOVER, + WIDGET_ID_SCROLLBAR_KNOB_GRABBED, + WIDGET_ID_SCROLLBAR_END, // do not use! + + // Combo box: + WIDGET_ID_COMBO_DROPDOWN, + + // Window: + WIDGET_ID_WINDOW_BASE, + + // other user-defined widget states can be specified after this: + // And you will of course need to handle it yourself in a SetColor() override for example + WIDGET_ID_USER, + }; + class Widget : public wi::scene::TransformComponent { private: int tooltipTimer = 0; protected: std::string name; - std::string tooltip; - std::string scriptTip; bool enabled = true; bool visible = true; + float shadow = 1; WIDGETSTATE state = IDLE; + mutable wi::SpriteFont tooltipFont; + mutable wi::SpriteFont scripttipFont; public: Widget(); @@ -88,16 +134,20 @@ namespace wi::gui void SetScriptTip(std::string&& value); void SetPos(const XMFLOAT2& value); void SetSize(const XMFLOAT2& value); + XMFLOAT2 GetPos() const; + virtual XMFLOAT2 GetSize() const; WIDGETSTATE GetState() const; virtual void SetEnabled(bool val); bool IsEnabled() const; virtual void SetVisible(bool val); bool IsVisible() const; // last param default: set color for all states - void SetColor(wi::Color color, WIDGETSTATE state = WIDGETSTATE_COUNT); + virtual void SetColor(wi::Color color, int id = -1); wi::Color GetColor() const; // last param default: set color for all states - void SetImage(wi::Resource textureResource, WIDGETSTATE state = WIDGETSTATE_COUNT); + virtual void SetImage(wi::Resource textureResource, int id = -1); + float GetShadowRadius() const { return shadow; } + void SetShadowRadius(float value) { shadow = value; } virtual void Update(const wi::Canvas& canvas, float dt); virtual void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const {} @@ -197,19 +247,25 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; + + void SetVertical(bool value) { vertical = value; } + bool IsVertical() const { return vertical; } }; // Static box that holds text class Label : public Widget { protected: - ScrollBar scrollbar; - float scrollbar_width = 18; public: void Create(const std::string& name); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; + + float scrollbar_width = 18; + ScrollBar scrollbar; }; // Text input box @@ -249,8 +305,6 @@ namespace wi::gui float start = 0, end = 1; float step = 1000; float value = 0; - - TextInputField valueInputField; public: // start : slider minimum value // end : slider maximum value @@ -267,8 +321,11 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; void RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSlide(std::function func); + + TextInputField valueInputField; }; // Two-state clickable box @@ -321,7 +378,10 @@ namespace wi::gui }; wi::vector items; - float GetItemOffset(int index) const; + wi::Color drop_color = wi::Color::Ghost(); + + float GetDropOffset(const wi::Canvas& canvas) const; + float GetItemOffset(const wi::Canvas& canvas, int index) const; public: void Create(const std::string& name); @@ -344,6 +404,7 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSelect(std::function func); }; @@ -352,32 +413,69 @@ namespace wi::gui class Window :public Widget { protected: - Button closeButton; - Button minimizeButton; - Button resizeDragger_UpperLeft; - Button resizeDragger_BottomRight; - Button moveDragger; - Label label; - ScrollBar scrollbar_vertical; - ScrollBar scrollbar_horizontal; wi::vector widgets; bool minimized = false; Widget scrollable_area; - public: - void Create(const std::string& name, bool window_controls = true); + float control_size = 20; + std::function onClose; + std::function onCollapse; - void AddWidget(Widget* widget, bool scrollable = true); + public: + enum class WindowControls + { + NONE = 0, + RESIZE_TOPLEFT = 1 << 0, + RESIZE_TOPRIGHT = 1 << 1, + RESIZE_BOTTOMLEFT = 1 << 2, + RESIZE_BOTTOMRIGHT = 1 << 3, + MOVE = 1 << 4, + CLOSE = 1 << 5, + COLLAPSE = 1 << 6, + + RESIZE = RESIZE_TOPLEFT | RESIZE_TOPRIGHT | RESIZE_BOTTOMLEFT | RESIZE_BOTTOMRIGHT, + CLOSE_AND_COLLAPSE = CLOSE | COLLAPSE, + ALL = RESIZE | MOVE | CLOSE | COLLAPSE, + }; + void Create(const std::string& name, WindowControls window_controls = WindowControls::ALL); + + enum class AttachmentOptions + { + NONE = 0, + SCROLLABLE = 1 << 0, + }; + void AddWidget(Widget* widget, AttachmentOptions options = AttachmentOptions::SCROLLABLE); void RemoveWidget(Widget* widget); void RemoveWidgets(); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; void RenderTooltip(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void SetVisible(bool value) override; void SetEnabled(bool value) override; - void SetMinimized(bool value); - bool IsMinimized() const; + void SetCollapsed(bool value); + bool IsCollapsed() const; + void SetMinimized(bool value); // Same as SetCollapsed() + bool IsMinimized() const; // Same as IsCollapsed() + void SetControlSize(float value); + float GetControlSize() const; + XMFLOAT2 GetSize() const override; // For the window, the returned size can be modified by collapsed state + XMFLOAT2 GetWidgetAreaSize() const; + + void OnClose(std::function func); + void OnCollapse(std::function func); + + Button closeButton; + Button collapseButton; + Button resizeDragger_UpperLeft; + Button resizeDragger_UpperRight; + Button resizeDragger_BottomLeft; + Button resizeDragger_BottomRight; + Button moveDragger; + Label label; + ScrollBar scrollbar_vertical; + ScrollBar scrollbar_horizontal; }; // HSV-Color Picker @@ -395,17 +493,9 @@ namespace wi::gui float saturation = 0.0f; // [0, 1] float luminance = 1.0f; // [0, 1] - TextInputField text_R; - TextInputField text_G; - TextInputField text_B; - TextInputField text_H; - TextInputField text_S; - TextInputField text_V; - Slider alphaSlider; - void FireEvents(); public: - void Create(const std::string& name, bool window_controls = true); + void Create(const std::string& name, WindowControls window_controls = WindowControls::ALL); void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; @@ -414,6 +504,14 @@ namespace wi::gui void SetPickColor(wi::Color value); void OnColorChanged(std::function func); + + TextInputField text_R; + TextInputField text_G; + TextInputField text_B; + TextInputField text_H; + TextInputField text_S; + TextInputField text_V; + Slider alphaSlider; }; // List of items in a tree (parent-child relationships) @@ -433,8 +531,6 @@ namespace wi::gui int item_highlight = -1; int opener_highlight = -1; - ScrollBar scrollbar; - wi::primitive::Hitbox2D GetHitbox_ListArea() const; wi::primitive::Hitbox2D GetHitbox_Item(int visible_count, int level) const; wi::primitive::Hitbox2D GetHitbox_ItemOpener(int visible_count, int level) const; @@ -457,8 +553,21 @@ namespace wi::gui void Update(const wi::Canvas& canvas, float dt) override; void Render(const wi::Canvas& canvas, wi::graphics::CommandList cmd) const override; + void SetColor(wi::Color color, int id = -1) override; void OnSelect(std::function func); + + ScrollBar scrollbar; }; } + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; + +template<> +struct enable_bitmask_operators { + static const bool enable = true; +}; diff --git a/WickedEngine/wiImage.h b/WickedEngine/wiImage.h index 16bb4d74a..37f1e4a91 100644 --- a/WickedEngine/wiImage.h +++ b/WickedEngine/wiImage.h @@ -131,14 +131,39 @@ namespace wi::image constexpr void disableLinearOutputMapping() { _flags &= ~OUTPUT_COLOR_SPACE_LINEAR; } Params() = default; - Params(float width, float height) : + + Params( + float width, + float height + ) : siz(width, height) {} - Params(float posX, float posY, float width, float height, const XMFLOAT4& color = XMFLOAT4(1, 1, 1, 1)) : + + Params( + float posX, + float posY, + float width, + float height, + const XMFLOAT4& color = XMFLOAT4(1, 1, 1, 1) + ) : pos(posX, posY, 0), siz(width, height), color(color) {} + + Params( + const XMFLOAT4& color, + wi::enums::BLENDMODE blendFlag = wi::enums::BLENDMODE_ALPHA, + bool background = false + ) : + color(color), + blendFlag(blendFlag) + { + if (background) + { + enableBackground(); + } + } }; diff --git a/WickedEngine/wiPhysics_Bullet.cpp b/WickedEngine/wiPhysics_Bullet.cpp index b6bc9ffbc..3a0c5c787 100644 --- a/WickedEngine/wiPhysics_Bullet.cpp +++ b/WickedEngine/wiPhysics_Bullet.cpp @@ -494,7 +494,7 @@ namespace wi::physics RigidBodyPhysicsComponent& physicscomponent = scene.rigidbodies[args.jobIndex]; Entity entity = scene.rigidbodies.GetEntity(args.jobIndex); - if (physicscomponent.physicsobject == nullptr) + if (physicscomponent.physicsobject == nullptr && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); const ObjectComponent* object = scene.objects.GetComponent(entity); @@ -531,7 +531,7 @@ namespace wi::physics rigidbody->setRestitution(physicscomponent.restitution); // For kinematic object, system updates physics state, else the physics updates system state: - if (physicscomponent.IsKinematic() || !IsSimulationEnabled()) + if ((physicscomponent.IsKinematic() || !IsSimulationEnabled()) && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); @@ -632,7 +632,7 @@ namespace wi::physics RigidBodyPhysicsComponent* physicscomponent = scene.rigidbodies.GetComponent(entity); // Feedback non-kinematic objects to system: - if (IsSimulationEnabled() && !physicscomponent->IsKinematic()) + if (IsSimulationEnabled() && !physicscomponent->IsKinematic() && scene.transforms.Contains(entity)) { TransformComponent& transform = *scene.transforms.GetComponent(entity); diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index c8fe7de04..a95d245aa 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -5201,7 +5201,7 @@ void DrawDebugWorld( for (Entity entity : armature.boneCollection) { const HierarchyComponent* hierarchy = scene.hierarchy.GetComponent(entity); - if (hierarchy == nullptr) + if (hierarchy == nullptr || !scene.transforms.Contains(entity) || !scene.transforms.Contains(hierarchy->parentID)) { continue; } @@ -5777,13 +5777,13 @@ void DrawDebugWorld( for (size_t i = 0; i < scene.probes.GetCount(); ++i) { const EnvironmentProbeComponent& probe = scene.probes[i]; + Entity entity = scene.probes.GetEntity(i); - if (probe.textureIndex < 0) + if (probe.textureIndex < 0 || !scene.transforms.Contains(entity)) { continue; } - Entity entity = scene.probes.GetEntity(i); const TransformComponent& transform = *scene.transforms.GetComponent(entity); XMStoreFloat4x4(&sb.g_xTransform, XMLoadFloat4x4(&transform.world)*camera.GetViewProjection()); @@ -5895,6 +5895,10 @@ void DrawDebugWorld( { const wi::EmittedParticleSystem& emitter = scene.emitters[i]; Entity entity = scene.emitters.GetEntity(i); + if (!scene.transforms.Contains(entity)) + { + continue; + } const TransformComponent& transform = *scene.transforms.GetComponent(entity); const MeshComponent* mesh = scene.meshes.GetComponent(emitter.meshID); @@ -5948,10 +5952,24 @@ void DrawDebugWorld( for (auto& x : paintrads) { + if (!scene.transforms.Contains(x.objectEntity) || + !scene.objects.Contains(x.objectEntity) + ) + { + continue; + } const ObjectComponent& object = *scene.objects.GetComponent(x.objectEntity); const TransformComponent& transform = *scene.transforms.GetComponent(x.objectEntity); + if (scene.meshes.GetCount() < object.mesh_index) + { + continue; + } const MeshComponent& mesh = scene.meshes[object.mesh_index]; const MeshComponent::MeshSubset& subset = mesh.subsets[x.subset]; + if (!scene.materials.Contains(subset.materialID)) + { + continue; + } const MaterialComponent& material = *scene.materials.GetComponent(subset.materialID); GraphicsDevice::GPUAllocation mem = device->AllocateGPU(sizeof(ShaderMeshInstancePointer), cmd); diff --git a/WickedEngine/wiScene.cpp b/WickedEngine/wiScene.cpp index 6835c76ea..18fdb5958 100644 --- a/WickedEngine/wiScene.cpp +++ b/WickedEngine/wiScene.cpp @@ -2100,6 +2100,37 @@ namespace wi::scene bounds = AABB::Merge(bounds, other.bounds); } + void Scene::FindAllEntities(wi::unordered_set& entities) const + { + entities.insert(names.GetEntityArray().begin(), names.GetEntityArray().end()); + entities.insert(layers.GetEntityArray().begin(), layers.GetEntityArray().end()); + entities.insert(transforms.GetEntityArray().begin(), transforms.GetEntityArray().end()); + entities.insert(hierarchy.GetEntityArray().begin(), hierarchy.GetEntityArray().end()); + entities.insert(materials.GetEntityArray().begin(), materials.GetEntityArray().end()); + entities.insert(meshes.GetEntityArray().begin(), meshes.GetEntityArray().end()); + entities.insert(impostors.GetEntityArray().begin(), impostors.GetEntityArray().end()); + entities.insert(objects.GetEntityArray().begin(), objects.GetEntityArray().end()); + entities.insert(aabb_objects.GetEntityArray().begin(), aabb_objects.GetEntityArray().end()); + entities.insert(rigidbodies.GetEntityArray().begin(), rigidbodies.GetEntityArray().end()); + entities.insert(softbodies.GetEntityArray().begin(), softbodies.GetEntityArray().end()); + entities.insert(armatures.GetEntityArray().begin(), armatures.GetEntityArray().end()); + entities.insert(lights.GetEntityArray().begin(), lights.GetEntityArray().end()); + entities.insert(aabb_lights.GetEntityArray().begin(), aabb_lights.GetEntityArray().end()); + entities.insert(cameras.GetEntityArray().begin(), cameras.GetEntityArray().end()); + entities.insert(probes.GetEntityArray().begin(), probes.GetEntityArray().end()); + entities.insert(aabb_probes.GetEntityArray().begin(), aabb_probes.GetEntityArray().end()); + entities.insert(forces.GetEntityArray().begin(), forces.GetEntityArray().end()); + entities.insert(decals.GetEntityArray().begin(), decals.GetEntityArray().end()); + entities.insert(aabb_decals.GetEntityArray().begin(), aabb_decals.GetEntityArray().end()); + entities.insert(animations.GetEntityArray().begin(), animations.GetEntityArray().end()); + entities.insert(animation_datas.GetEntityArray().begin(), animation_datas.GetEntityArray().end()); + entities.insert(emitters.GetEntityArray().begin(), emitters.GetEntityArray().end()); + entities.insert(hairs.GetEntityArray().begin(), hairs.GetEntityArray().end()); + entities.insert(weathers.GetEntityArray().begin(), weathers.GetEntityArray().end()); + entities.insert(sounds.GetEntityArray().begin(), sounds.GetEntityArray().end()); + entities.insert(inverse_kinematics.GetEntityArray().begin(), inverse_kinematics.GetEntityArray().end()); + entities.insert(springs.GetEntityArray().begin(), springs.GetEntityArray().end()); + } void Scene::Entity_Remove(Entity entity, bool recursive) { @@ -2176,6 +2207,18 @@ namespace wi::scene return root; } + Entity Scene::Entity_CreateTransform( + const std::string& name + ) + { + Entity entity = CreateEntity(); + + names.Create(entity) = name; + + transforms.Create(entity); + + return entity; + } Entity Scene::Entity_CreateMaterial( const std::string& name ) @@ -2384,10 +2427,13 @@ namespace wi::scene names.Create(entity) = name; - SoundComponent& sound = sounds.Create(entity); - sound.filename = filename; - sound.soundResource = wi::resourcemanager::Load(filename, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); - wi::audio::CreateSoundInstance(&sound.soundResource.GetSound(), &sound.soundinstance); + if (!filename.empty()) + { + SoundComponent& sound = sounds.Create(entity); + sound.filename = filename; + sound.soundResource = wi::resourcemanager::Load(filename, wi::resourcemanager::Flags::IMPORT_RETAIN_FILEDATA); + wi::audio::CreateSoundInstance(&sound.soundResource.GetSound(), &sound.soundinstance); + } TransformComponent& transform = transforms.Create(entity); transform.Translate(position); @@ -2395,6 +2441,233 @@ namespace wi::scene return entity; } + Entity Scene::Entity_CreateCube( + const std::string& name + ) + { + // 1) Create an ObjectComponent, this can be used to instance a mesh: + Entity entity = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity) = name; + } + + layers.Create(entity); + + transforms.Create(entity); + + aabb_objects.Create(entity); + + ObjectComponent& object = objects.Create(entity); + + // 2) Create a mesh, this will contain vertex buffers: + // Here a separate mesh entity is created, to allow efficient instancing (not duplicating mesh data when duplicating objects) + Entity entity_mesh_material = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity_mesh_material) = name + "_mesh_material"; + } + + MeshComponent& mesh = meshes.Create(entity_mesh_material); + + // object references the mesh entity (there can be multiple objects referencing one mesh): + object.meshID = entity_mesh_material; + + mesh.vertex_positions = { + // -Z + XMFLOAT3(-1,1, -1), + XMFLOAT3(-1,-1, -1), + XMFLOAT3(1,-1, -1), + XMFLOAT3(1,1, -1), + + // +Z + XMFLOAT3(-1,1, 1), + XMFLOAT3(-1,-1, 1), + XMFLOAT3(1,-1, 1), + XMFLOAT3(1,1, 1), + + // -X + XMFLOAT3(-1, -1,1), + XMFLOAT3(-1, -1,-1), + XMFLOAT3(-1, 1,-1), + XMFLOAT3(-1, 1,1), + + // +X + XMFLOAT3(1, -1,1), + XMFLOAT3(1, -1,-1), + XMFLOAT3(1, 1,-1), + XMFLOAT3(1, 1,1), + + // -Y + XMFLOAT3(-1, -1,1), + XMFLOAT3(-1, -1,-1), + XMFLOAT3(1, -1,-1), + XMFLOAT3(1, -1,1), + + // +Y + XMFLOAT3(-1, 1,1), + XMFLOAT3(-1, 1,-1), + XMFLOAT3(1, 1,-1), + XMFLOAT3(1, 1,1), + }; + + mesh.vertex_normals = { + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + XMFLOAT3(0,0,-1), + + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + XMFLOAT3(0,0,1), + + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + XMFLOAT3(-1,0,0), + + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + XMFLOAT3(1,0,0), + + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + XMFLOAT3(0,-1,0), + + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + }; + + mesh.vertex_uvset_0 = { + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + }; + + mesh.indices = { + 0, 1, 2, 0, 2, 3, + 0 + 4, 2 + 4, 1 + 4, 0 + 4, 3 + 4, 2 + 4, // swapped winding + 0 + 4 * 2, 1 + 4 * 2, 2 + 4 * 2, 0 + 4 * 2, 2 + 4 * 2, 3 + 4 * 2, + 0 + 4 * 3, 2 + 4 * 3, 1 + 4 * 3, 0 + 4 * 3, 3 + 4 * 3, 2 + 4 * 3, // swapped winding + 0 + 4 * 4, 2 + 4 * 4, 1 + 4 * 4, 0 + 4 * 4, 3 + 4 * 4, 2 + 4 * 4, // swapped winding + 0 + 4 * 5, 1 + 4 * 5, 2 + 4 * 5, 0 + 4 * 5, 2 + 4 * 5, 3 + 4 * 5, + }; + + // Subset maps a part of the mesh to a material: + MeshComponent::MeshSubset& subset = mesh.subsets.emplace_back(); + subset.indexCount = uint32_t(mesh.indices.size()); + materials.Create(entity_mesh_material); + subset.materialID = entity_mesh_material; // the material component is created on the same entity as the mesh component, though it is not required as it could also use a different material entity + + // vertex buffer GPU data will be packed and uploaded here: + mesh.CreateRenderData(); + + return entity; + } + Entity Scene::Entity_CreatePlane( + const std::string& name + ) + { + // 1) Create an ObjectComponent, this can be used to instance a mesh: + Entity entity = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity) = name; + } + + layers.Create(entity); + + transforms.Create(entity); + + aabb_objects.Create(entity); + + ObjectComponent& object = objects.Create(entity); + + // 2) Create a mesh, this will contain vertex buffers: + // Here a separate mesh entity is created, to allow efficient instancing (not duplicating mesh data when duplicating objects) + Entity entity_mesh_material = CreateEntity(); + + if (!name.empty()) + { + names.Create(entity_mesh_material) = name + "_mesh_material"; + } + + MeshComponent& mesh = meshes.Create(entity_mesh_material); + + // object references the mesh entity (there can be multiple objects referencing one mesh): + object.meshID = entity_mesh_material; + + mesh.vertex_positions = { + // +Y + XMFLOAT3(-1, 0,1), + XMFLOAT3(-1, 0,-1), + XMFLOAT3(1, 0,-1), + XMFLOAT3(1, 0,1), + }; + + mesh.vertex_normals = { + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + XMFLOAT3(0,1,0), + }; + + mesh.vertex_uvset_0 = { + XMFLOAT2(0,0), + XMFLOAT2(0,1), + XMFLOAT2(1,1), + XMFLOAT2(1,0), + }; + + mesh.indices = { + 0, 1, 2, 0, 2, 3, + }; + + // Subset maps a part of the mesh to a material: + MeshComponent::MeshSubset& subset = mesh.subsets.emplace_back(); + subset.indexCount = uint32_t(mesh.indices.size()); + materials.Create(entity_mesh_material); + subset.materialID = entity_mesh_material; // the material component is created on the same entity as the mesh component, though it is not required as it could also use a different material entity + + // vertex buffer GPU data will be packed and uploaded here: + mesh.CreateRenderData(); + + return entity; + } void Scene::Component_Attach(Entity entity, Entity parent, bool child_already_in_local_space) { @@ -3013,6 +3286,8 @@ namespace wi::scene ArmatureComponent& armature = armatures[args.jobIndex]; Entity entity = armatures.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); // The transform world matrices are in world space, but skinning needs them in armature-local space, @@ -3711,6 +3986,8 @@ namespace wi::scene { DecalComponent& decal = decals[i]; Entity entity = decals.GetEntity(i); + if (!transforms.Contains(entity)) + continue; const TransformComponent& transform = *transforms.GetComponent(entity); decal.world = transform.world; @@ -3901,6 +4178,8 @@ namespace wi::scene { EnvironmentProbeComponent& probe = probes[probeIndex]; Entity entity = probes.GetEntity(probeIndex); + if (!transforms.Contains(entity)) + continue; const TransformComponent& transform = *transforms.GetComponent(entity); probe.position = transform.GetPosition(); @@ -3955,6 +4234,8 @@ namespace wi::scene ForceFieldComponent& force = forces[args.jobIndex]; Entity entity = forces.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); XMMATRIX W = XMLoadFloat4x4(&transform.world); @@ -3974,6 +4255,8 @@ namespace wi::scene LightComponent& light = lights[args.jobIndex]; Entity entity = lights.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const TransformComponent& transform = *transforms.GetComponent(entity); AABB& aabb = aabb_lights[args.jobIndex]; @@ -4032,6 +4315,8 @@ namespace wi::scene HairParticleSystem& hair = hairs[args.jobIndex]; Entity entity = hairs.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; const LayerComponent* layer = layers.GetComponent(entity); if (layer != nullptr) @@ -4115,6 +4400,8 @@ namespace wi::scene EmittedParticleSystem& emitter = emitters[args.jobIndex]; Entity entity = emitters.GetEntity(args.jobIndex); + if (!transforms.Contains(entity)) + return; MaterialComponent* material = materials.GetComponent(entity); if (material != nullptr) diff --git a/WickedEngine/wiScene.h b/WickedEngine/wiScene.h index b4e1df07a..6d680345d 100644 --- a/WickedEngine/wiScene.h +++ b/WickedEngine/wiScene.h @@ -16,6 +16,7 @@ #include "wiECS.h" #include "wiVector.h" #include "wiRectPacker.h" +#include "wiUnorderedSet.h" #include #include @@ -1460,6 +1461,8 @@ namespace wi::scene // Merge an other scene into this. // The contents of the other scene will be lost (and moved to this)! void Merge(Scene& other); + // Finds all entities in the scene that have any components attached + void FindAllEntities(wi::unordered_set& entities) const; // Removes (deletes) a specific entity from the scene (if it exists): // recursive : also removes children if true @@ -1489,6 +1492,9 @@ namespace wi::scene EntitySerializeFlags flags = EntitySerializeFlags::RECURSIVE ); + wi::ecs::Entity Entity_CreateTransform( + const std::string& name + ); wi::ecs::Entity Entity_CreateMaterial( const std::string& name ); @@ -1538,6 +1544,12 @@ namespace wi::scene const std::string& filename, const XMFLOAT3& position = XMFLOAT3(0, 0, 0) ); + wi::ecs::Entity Entity_CreateCube( + const std::string& name + ); + wi::ecs::Entity Entity_CreatePlane( + const std::string& name + ); // Attaches an entity to a parent: // child_already_in_local_space : child won't be transformed from world space to local space diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index fa7ffb829..16510a2e3 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 70; // minor bug fixes, alterations, refactors, updates - const int revision = 13; + const int revision = 14; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);